gpt4 book ai didi

php - 将主机字节顺序(小端)中的字符串转换为网络字节顺序(大端)

转载 作者:行者123 更新时间:2023-12-02 20:54:57 27 4
gpt4 key购买 nike

我有一个十六进制字符串,其内容为18000000,该字符串采用主机字节顺序(小端),我需要将其转换为网络字节顺序(大端)。生成的十六进制字符串将为 00000018

总而言之,我需要转换18000000 至 00000018

如何在 PHP 中实现此目的?

最佳答案

您可以使用 pack/unpack 函数来转换字节顺序:

/**
* Convert $endian hex string to specified $format
*
* @param string $endian Endian HEX string
* @param string $format Endian format: 'N' - big endian, 'V' - little endian
*
* @return string
*/
function formatEndian($endian, $format = 'N') {
$endian = intval($endian, 16); // convert string to hex
$endian = pack('L', $endian); // pack hex to binary sting (unsinged long, machine byte order)
$endian = unpack($format, $endian); // convert binary sting to specified endian format

return sprintf("%'.08x", $endian[1]); // return endian as a hex string (with padding zero)
}

$endian = '18000000';
$big = formatEndian($endian, 'N'); // string "00000018"
$little = formatEndian($endian, 'V'); // string "18000000"

要了解有关 pack 格式的更多信息,请查看 http://www.php.net/manual/en/function.pack.php

关于php - 将主机字节顺序(小端)中的字符串转换为网络字节顺序(大端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40828024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com