-1

我目前使用。

这是我将它们格式化的一些输出,它们都像这样在一起。

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所以不应该$014C0x014C被表示为332而不是76

76似乎来自$4C又名为什么它忽略第一个十六0x4C进制字符$014C2

4

1 回答 1

0

啊,我想我明白了。

  `currentAttackCount: Byte;`

我把它增加到

  currentAttackCount: Word;

希望这能解决问题.. 错过它,因为它是一个全局变量并且代码太多。

于 2013-10-09T10:10:03.603 回答