十六进制字符串WORD上的Delphi StrToInt,UShort,16位十六进制失败

时间:2013-10-09 10:05:38

标签: delphi hex

我目前正在使用。

以下是我格式化的一些输出,他们就像这样。

  

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十六进制字符

1 个答案:

答案 0 :(得分:0)

啊我想我想通了。

  `currentAttackCount: Byte;`

我把它增加到了

  currentAttackCount: Word;

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