我有一个用 php 脚本控制的 eeprom。我可以控制这个eeprom读写字(16位)的参数,其中一些可以控制两个不同的参数,可以用十进制或十六进制数据写入字的第一个或第二个字节(8位)。有一种方法可以在 php 中写一个单词(可以写第一个或第二个字节)?
问问题
975 次
1 回答
1
我想你正在寻找pack()
:
// Unsigned decimal values of the bytes
$firstOctet = 125;
$secondOctet = 213;
$byte = pack('C', $firstOctet);
$word = pack('C*', $firstOctet, $secondOctet);
您可能需要将整数类型的值提供给pack()
,如果您想在代码中将它们表示为十六进制,您可以执行以下操作之一:
// Both of these are identical to "$firstOctet = 125;"
$firstOctet = 0x7D;
$firstOctet = hexdec('7D');
或者,您可以使用以下语法在字符串中声明文字 Hex 字节:
// These should produce the same results as the pack() example
$byte = "\x7D";
$word = "\x7D\xD5";
如果您需要将正在读取的字节转换回整数进行处理,您可以使用补码函数unpack()
:
$word = "\x7D\xD5";
$bytes = unpack('C*byte', $word);
print_r($bytes);
/*
Array
(
[byte1] => 125
[byte2] => 213
)
*/
于 2012-05-24T10:38:15.937 回答