如何使用PHP将整数转换为8位二进制数据?

如何使用PHP将整数转换为8位二进制数据?,php,binary,Php,Binary,我需要将整数转换为8位,但pack只能转换为16位二进制数据。 我在谷歌上搜索,找不到任何东西。 有人能帮忙吗?你可以用c或c来做这个。比如: pack('C', 234); c是有符号的,c是无符号的 echo $test = pack('C', 1); 根据格式将给定参数打包为二进制字符串 此函数的思想取自Perl,所有格式化代码的工作原理与Perl中的相同。但是,缺少一些格式代码,例如Perl的“u”格式代码 请注意,有符号和无符号值之间的区别仅影响函数unpack(),其中as fu

我需要将整数转换为8位,但pack只能转换为16位二进制数据。 我在谷歌上搜索,找不到任何东西。
有人能帮忙吗?

你可以用c或c来做这个。比如:

pack('C', 234);
c是有符号的,c是无符号的

echo $test = pack('C', 1);
根据格式将给定参数打包为二进制字符串

此函数的思想取自Perl,所有格式化代码的工作原理与Perl中的相同。但是,缺少一些格式代码,例如Perl的“u”格式代码

请注意,有符号和无符号值之间的区别仅影响函数unpack(),其中as function pack()为有符号和无符号格式代码提供相同的结果

代码是

a   NUL-padded string
A   SPACE-padded string
h   Hex string, low nibble first
H   Hex string, high nibble first
c   signed char
C   unsigned char
s   signed short (always 16 bit, machine byte order)
S   unsigned short (always 16 bit, machine byte order)
n   unsigned short (always 16 bit, big endian byte order)
v   unsigned short (always 16 bit, little endian byte order)
i   signed integer (machine dependent size and byte order)
I   unsigned integer (machine dependent size and byte order)
l   signed long (always 32 bit, machine byte order)
L   unsigned long (always 32 bit, machine byte order)
N   unsigned long (always 32 bit, big endian byte order)
V   unsigned long (always 32 bit, little endian byte order)
f   float (machine dependent size and representation)
d   double (machine dependent size and representation)
x   NUL byte
X   Back up one byte
@   NUL-fill to absolute position

要获得正确的格式并添加像这样的前导zéros 00000001 使用以下命令:

<?php
// Add leading zeros
$bin = sprintf( "%08d", decbin( 26 )); // "00011010"
?>


回答

你能举一个你想做什么的例子吗?c是char,可以这样使用吗?谢谢,这在其他方面帮助了我,sprintf是自切片面包以来最适合我的东西。