BCD码以TCP方式方式传输,以文本方式接收数值是否会变化。 ( 积分: 200 )

  • 主题发起人 主题发起人 aus
  • 开始时间 开始时间
A

aus

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个程序,使用TClientSocket做客户端连接到服务器,在TClientSocket的OnRead里面用Socket.ReceiveText来接收。从服务器过来的消息,其中有一种里面是ASCII码与BCD码混编的,我用Socket.ReceiveText接收下来,进行解析,发现BCD码部分解析异常:本来BCD码解出来只会是00-99,目前解出来的竟然有8B或3B。是否BCD码传输时数值会被改变?郁闷之极,请各位大佬指点一下。
 
我有个程序,使用TClientSocket做客户端连接到服务器,在TClientSocket的OnRead里面用Socket.ReceiveText来接收。从服务器过来的消息,其中有一种里面是ASCII码与BCD码混编的,我用Socket.ReceiveText接收下来,进行解析,发现BCD码部分解析异常:本来BCD码解出来只会是00-99,目前解出来的竟然有8B或3B。是否BCD码传输时数值会被改变?郁闷之极,请各位大佬指点一下。
 
ASCII与BCD混编的不能直接当text来读。举例来说,如果你的数据是ASCII码的31和BCD42,则实际上:ASCII码31是两个字节,内容分别是0x33和0x31,BCD的42是一个字节,内容就是0x42,这时你当text来读,就会读出3个ASCII码:31B
 
传输过程中值不会改变,问题应该是你解析方法不对
 
谢谢!是字符转义的问题!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部