我有硬件单元,当请求一些数据时,返回一个字符串,当在空间爆炸时,返回值数组:
$bytes = array(
'03',
'80',
'A0',
'01' // and others, total of 240 entries
);
这些实际上描述了字节:0x03
,0x80
,0xA0
,0x01
。我需要将它们转换为实际值。
我在循环中试过:$value = 0x{$byte}
,$value = {'0x' . $byte}
和其他人,但无济于事。
还试过unpack
,但不知道应用什么格式,对字节有点无能为力。
似乎是一个基本问题,但无法绕过它。
如何动态地将它们转换为实际的整数值?
答案 0 :(得分:1)
答案 1 :(得分:1)
在PHP中,字节与单字符长字符串相同,具有以下转义:
$byte = "\x03";
有一个功能可以帮助你,chr()。 此函数将要获取的字节的ASCII代码作为参数。因为它可以是数字字符串或整数,您可以使用
$code = "03";
$byte = chr("0x" . $code);
获取'\x03'
字节,chr的参数被解释为十六进制整数。
另一方面,如@chumkiu所提到的,如果您尝试获取整数值,则以下代码将起作用:
$code = "03";
$int = hexdec($code);
答案 2 :(得分:1)
答案 3 :(得分:0)
如果$string
是原始数据(以空格分隔的十六进制数字),那么您可以像这样提取二进制数据:
$binary = pack('H*',str_replace(' ','',$string));