编写和读取单词和字节的Php脚本

编写和读取单词和字节的Php脚本,php,word,byte,Php,Word,Byte,我有一个用php脚本控制的eeprom。 我可以控制eeprom读写字(16位)的参数,其中一些可以控制两个不同的参数,可以用十进制或十六进制数据写入字的第一个或第二个字节(8位)。 有一种用php编写单词的方法(可以自由编写第一个或第二个字节?我想您正在寻找: 您可能需要向pack()提供整数类型的值,如果您想在代码中将它们表示为十六进制,可以执行以下操作之一: // Both of these are identical to "$firstOctet = 125;" $firstOctet

我有一个用php脚本控制的eeprom。 我可以控制eeprom读写字(16位)的参数,其中一些可以控制两个不同的参数,可以用十进制或十六进制数据写入字的第一个或第二个字节(8位)。
有一种用php编写单词的方法(可以自由编写第一个或第二个字节?

我想您正在寻找:

您可能需要向
pack()
提供整数类型的值,如果您想在代码中将它们表示为十六进制,可以执行以下操作之一:

// Both of these are identical to "$firstOctet = 125;"
$firstOctet = 0x7D;
$firstOctet = hexdec('7D');
或者,您可以使用以下语法在字符串中声明文字十六进制字节:

// These should produce the same results as the pack() example
$byte = "\x7D";
$word = "\x7D\xD5";
如果需要将正在读取的字节转换回整数进行处理,可以使用补码函数:


感谢您的回复和清晰,但是我在使用这些代码时遇到了问题。如果我写它运行的十进制代码,如果我写它运行的第二个代码块一样的十六进制代码,但是如果我写“$byte=“\x7D””或者使用两个hexa返回此错误:预期参数较长。最后,如果我尝试使用pack函数,它会返回一个未使用的参数。谢谢您的耐心。@Kerberos抱歉,我不太清楚,如果您使用
“\x7D”
语法,您不需要使用
pack()
,您是在字符串中声明一个文本字节。看,希望它能澄清一点。也许还能帮助说明语法的含义。我想我找到了问题所在!在pack函数的帮助下,我发现这行代码:“它将有8个字节长:4个字节的长度(因为它是32位的值),3个字节的ascii‘aBc’,1个字节的cr和1个字节的lf”,它将数据转换成字符串!因此,它占用8字节数据的两个字,而不是一个字。因此,“预期参数为长”的错误。如何将两个十六进制(或整数)放在一个单词中?这就是
C*
所做的,它将提供的整数转换为8位无符号整数-基本上是字节。您有哪些数据,以及您希望二进制文件是什么样子的?但对于这个参数,它返回:“help()希望参数2是长的,字符串在第4行的/htdocs/index10.php中给出”。其中help()是我将单词放入第二个参数的函数。
// These should produce the same results as the pack() example
$byte = "\x7D";
$word = "\x7D\xD5";
$word = "\x7D\xD5";
$bytes = unpack('C*byte', $word);
print_r($bytes);
/*
  Array
  (
      [byte1] => 125
      [byte2] => 213
  )
*/