插件窝 干货文章 php二进制转换函数

php二进制转换函数

二进制 string 字符串 十进制 383    来源:    2025-03-19

在PHP中,处理二进制数据时,可以使用一些内置函数来进行二进制转换。以下是一些常用的PHP函数,用于处理二进制数据:

1. bin2hex()hex2bin()

  • bin2hex(string $string): string: 将二进制数据转换为十六进制表示。
  • hex2bin(string $string): string: 将十六进制字符串转换回二进制数据。
$binaryData = "Hello";
$hex = bin2hex($binaryData); // 48656c6c6f
$binary = hex2bin($hex); // Hello

2. pack()unpack()

  • pack(string $format, mixed ...$values): string: 将数据打包成二进制字符串。
  • unpack(string $format, string $string): array: 将二进制字符串解包为数组。
$binary = pack("nvc*", 0x1234, 0x5678, 65, 66); // 打包二进制数据
$data = unpack("nint/vchar/c*chars", $binary); // 解包二进制数据

3. base64_encode()base64_decode()

  • base64_encode(string $string): string: 将二进制数据编码为Base64字符串。
  • base64_decode(string $string, bool $strict = false): string: 将Base64字符串解码为二进制数据。
$binaryData = "Hello";
$base64 = base64_encode($binaryData); // SGVsbG8=
$binary = base64_decode($base64); // Hello

4. ord()chr()

  • ord(string $string): int: 返回字符串中第一个字符的ASCII值。
  • chr(int $codepoint): string: 返回指定ASCII值对应的字符。
$ascii = ord("A"); // 65
$char = chr(65); // A

5. str_pad()

  • str_pad(string $input, int $pad_length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): string: 将字符串填充到指定长度,可以用于二进制数据的填充。
$binaryData = "Hello";
$padded = str_pad($binaryData, 10, "\0", STR_PAD_RIGHT); // Hello\0\0\0\0\0

6. bitwise operators (位运算符)

PHP支持位运算符,可以直接对二进制数据进行操作。

$a = 0b1010; // 二进制 1010 (十进制 10)
$b = 0b1100; // 二进制 1100 (十进制 12)

$and = $a & $b; // 二进制 1000 (十进制 8)
$or = $a | $b; // 二进制 1110 (十进制 14)
$xor = $a ^ $b; // 二进制 0110 (十进制 6)
$not = ~$a; // 二进制 11111111111111111111111111110101 (取决于系统位数)

7. bindec(), decbin(), octdec(), decoct(), hexdec(), dechex()

  • bindec(string $binary_string): int|float: 将二进制字符串转换为十进制数。
  • decbin(int $number): string: 将十进制数转换为二进制字符串。
  • octdec(string $octal_string): int|float: 将八进制字符串转换为十进制数。
  • decoct(int $number): string: 将十进制数转换为八进制字符串。
  • hexdec(string $hex_string): int|float: 将十六进制字符串转换为十进制数。
  • dechex(int $number): string: 将十进制数转换为十六进制字符串。
$binary = "1010";
$decimal = bindec($binary); // 10
$binary = decbin(10); // 1010

$hex = "A";
$decimal = hexdec($hex); // 10
$hex = dechex(10); // A

8. sprintf()printf()

  • sprintf(string $format, mixed ...$values): string: 返回格式化后的字符串,可以用于格式化二进制数据。
  • printf(string $format, mixed ...$values): int: 输出格式化后的字符串。
$binary = sprintf("%08b", 10); // 00001010
printf("%08b", 10); // 输出 00001010

9. unpack()pack() 结合使用

unpack()pack() 可以用于处理复杂的二进制数据结构,如网络协议、文件格式等。

$binary = pack("nvc*", 0x1234, 0x5678, 65, 66);
$data = unpack("nint/vchar/c*chars", $binary);
print_r($data);

10. gzcompress()gzuncompress()

  • gzcompress(string $data, int $level = -1): string: 压缩二进制数据。
  • gzuncompress(string $data, int $length = 0): string: 解压缩二进制数据。
$compressed = gzcompress("Hello World");
$original = gzuncompress($compressed);

总结

PHP提供了丰富的函数来处理二进制数据,包括转换、打包、解包、压缩、解压缩等操作。根据具体需求选择合适的函数来处理二进制数据。