PHP中的增量十六进制值(小端?)
在传入的UDP数据包中,我有十六进制值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
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不适用…)。