PHP中的增量十六进制值(小端?)

PHP中的增量十六进制值(小端?),php,integer,hex,increment,Php,Integer,Hex,Increment,在传入的UDP数据包中,我有十六进制值b70500。这实际上是一个序列号(1463)。在以相同格式(b80500)将其发送回服务器之前,我需要增加此值 在PHP中,如何将值增加1 使用建议的代码,我能够将十六进制值转换为整数,并将其递增一: $original_hex = 'b70500'; // 1463 $original_int = unpack("H*", strrev(pack("H*", $origina

在传入的UDP数据包中,我有十六进制值
b70500
。这实际上是一个序列号(
1463
)。在以相同格式(
b80500
)将其发送回服务器之前,我需要增加此值

在PHP中,如何将值增加1

使用建议的代码,我能够将十六进制值转换为整数,并将其递增一:

$original_hex = 'b70500';                                        // 1463
$original_int = unpack("H*", strrev(pack("H*", $original_hex))); // 0005b7
$incremented_int = hexdec($original_int[1]) + 1;                 // 1464
$incremented_hex = ?                                             // Expected result: b80500
。。。但我不知道如何将它转换回十六进制。也许有一种更有效的方法?

hexex()
dechex()
。您不必解压缩该值

$incremented = dechex(hexdec('b70500') + 1);

这并不漂亮,我敢打赌有更有效的方法可以做到这一点,但它是有效的:

function increment_hex($hex) {
  $original_hex = $hex;
  $original_int = unpack("H*", strrev(pack("H*", $original_hex)));
  $incremented_int = hexdec($original_int[1]) + 1;
  $incremented_hex = dechex($incremented_int);

  $padded_hex = str_pad($incremented_hex, 6, '0', STR_PAD_LEFT);
  $reversed_hex = unpack("H*", strrev(pack("H*", $padded_hex)));

  return $reversed_hex[1];
}

echo "result: " . increment_hex('b70500') . "\n";

result:b80500

如果使用
解包
获取十进制数,请查看
pack
()方法获取相反的结果。谢谢!但是,该代码段返回
b70501
,(对应于67000)。预期结果为
b80500
(1464)。更具体地说:服务器希望数字采用相同的格式,
5b8
(也对应于1464不适用…)。