回 帖 发 新 帖 刷新版面

主题:谁能解释下这段代码?帮帮忙,我不会忘记给分的

function tf_zct.getpy(hzchar:string):char;
begin
  case word(hzchar[1]) shl 8+word(hzchar[2]) of
  $B0A1..$B0C4:RESULT:='A';
  $B0C5..$B2C0:RESULT:='B';
  $B2C1..$B4ED:RESULT:='C';
  $B4EE..$B6E9:RESULT:='D';
  $B6EA..$B7A1:RESULT:='E';
  $B7A2..$B8C0:RESULT:='F';
  $B8C1..$B9FD:RESULT:='G';
  $B9FE..$BBF6:RESULT:='H';
  $BBF7..$BFA5:RESULT:='J';
  $BFA6..$C0AB:RESULT:='K';
  $C0AC..$C2E7:RESULT:='L';
  $C2E8..$C4C2:RESULT:='M';
  $C4C3..$C5B5:RESULT:='N';
  $C5B6..$C5BD:RESULT:='O';
  $C5BE..$C6D9:RESULT:='P';
  $C6DA..$C8BA:RESULT:='Q';
  $C8BB..$C8F5:RESULT:='R';
  $C8F6..$CBF9:RESULT:='S';
  $CBFA..$CDD9:RESULT:='T';
  $CDDA..$CEF3:RESULT:='W';
  $CEF4..$D188:RESULT:='X';
  $D1B9..$D4D0:RESULT:='Y';
  $D4D1..$D7F9:RESULT:='Z';
  else result:=char(32);
end;

谢谢啊

回复列表 (共4个回复)

沙发

根据代码猜意思,我猜这段作用是返回汉字的首字母
可能$B0A1代表“啊”,$B0C4代表“唉”,他们之间的字也都是以“A”开头的。
至于这种码叫什么我就不清楚了,ASCII码?区位码?电话号码?
百度了一下,似乎叫GBK,国标码?

板凳

楼上说对了。

这种码叫国标码,GBK,最确切似乎是GB2312

word(hzchar[1]) shl 8+word(hzchar[2]) 这就是返回一个汉字两个字节的国标码。即:第一个字节左移8位然后加第二个字节。

关于GB2312汉字编码,可看一下:http://219.136.187.225/SchoolWeb/hzdwzx/xxzy/xxzy-kj/xxzy-xx/xxzy-xx1/xxzy-xx1-1/HAIZI/GBK2.htm

简而言之,就是利用GB2312汉字编码的规律,返回某个汉字拼音的第一个字母。
代码最后少了一个end

3 楼

晕了,我只是个初学者,竟然学到国际码去了。。。

4 楼

国标码,不是国际码=。=
幸好没看成国标舞

我来回复

您尚未登录,请登录后再回复。点此登录或注册