关于数据“打包、解包”的问题(80分)

  • 主题发起人 主题发起人 kittycat
  • 开始时间 开始时间
K

kittycat

Unregistered / Unconfirmed
GUEST, unregistred user!
封包格式为0x02 SEQ Length Data CheckSum 0x03(以十六进制02开头,03结尾),SEQ为序列号,Length为Data长度,Check Sum是自”传输序号”字段的第一个 Byte 起,至”资料内容”字段最后一个 Byte 止,XOR 所有的 Bytes,并将所得之值存放于本字段。比如上面所有字段长度均为十六进制Hex(1)
现在已知data为字符串abc,seq=1,请问如何编写一个函数为data加上头和尾。如果收到这样的一串信息,如何编写一个函数为data去掉头和尾。
谢谢!
 
从包文的第四个字节读到倒数第三个为位。
当第一个字节是0X02
其它几个应该要知道他们表示的位数才可以知道取数据的。LENGTH 不过个数字如果很大的话,如》256的话,那么可能有二位
 
0x02 SEQ Length CheckSum 0x03这几个字段都是十六进制表示,我该如何处理。他和我们平时的String是不一样的,封包的时候要注意什么,还有是不是要把得到读到数组里之后再解包呢
 
"无头骑士"您好,您说的“LENGTH 不过个数字如果很大的话,如》256的话,那么可能有二位”是什么意思,如果是两位十六进制的,他表示的长度应该=第一位的数字*16+第二位的数字。是这样么,为什么成了256呢,请帮忙解释
 
如果length字段用2位16进制表示他后面内容的长度,
定义
arr:array of byte
假设length字段为arr[2],arr[3]两位。当长度等于4的时候PWord(@arr[2])^:=4,结果成了arr[2]=4,arr[3]=0。可我要的结果应该是arr[2]=0,arr[3]=4,arr[2]是高位,arr[3]是低位,对么
 
后退
顶部