我目前正在使用。
以下是我格式化的一些输出,他们就像这样。
E14802000003FA00014C0000031501A8
currentAttackCount := StrToInt('$' + Copy(CurHex, 17, 4));
Log('Packet = ' + CurHex + ' Count = ' + IntToStr(currentAttackCount) + ' STR = ' + '$' + Copy(CurHex, 17, 4));
格式化输出
包= E1 48 02 00 00 03 FA 00 [01 4C] 00 00 03 15 01 A8 [计数= 76] [STR = $ 014C]
包= E1 48 02 00 00 03 FA 00 [01 4D] 00 00 03 15 02 26 [计数= 77] [STR = $ 014D]
包= E1 48 02 00 00 03 FA 00 [01 4F] 00 00 03 15 02 26 [计数= 79] [STR = $ 014F]
正如您所见STR
输出为STR = $014C
代码:'STR = ' + '$' + Copy(CurHex, 17, 4));
现在,如果你看一下StrToInt
currentAttackCount := StrToInt('$' + Copy(CurHex, 17, 4));
它与STR
几乎相同,因此不应将$014C
又名0x014C
表示为332
而不是76
76
似乎来自$4C
0x4C
$014C
为什么忽略第一个2
十六进制字符
答案 0 :(得分:0)
啊我想我想通了。
`currentAttackCount: Byte;`
我把它增加到了
currentAttackCount: Word;
希望这可以解决问题..错过了它,因为它是一个全局变量并且代码太多了。