我需要将整数转换为8位,但打包只能转换为16位二进制数据。 我在谷歌搜索,无法获得成功。 有人可以帮忙吗?
答案 0 :(得分:5)
echo $test = pack('C', 1);
根据格式将给定参数打包成二进制字符串。
此功能的想法来自Perl,所有格式代码的工作方式与Perl相同。但是,有一些格式代码丢失,例如Perl的“u”格式代码。
请注意,有符号和无符号值之间的区别仅影响函数unpack(),其中函数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
答案 1 :(得分:3)
您可以使用c或C.喜欢:
pack('C', 234);
c已签名,C未签名。
答案 2 :(得分:3)
要获得正确的格式并添加类似于00000001的主要zéros 用这个:
<?php
// Add leading zeros
$bin = sprintf( "%08d", decbin( 26 )); // "00011010"
?>
中回答