将字节转换为二进制

时间:2017-06-20 09:51:58

标签: php random binary byte

我正在使用此功能http://php.net/manual/fr/function.random-bytes.php 我想把这个随机字节转换成二进制视图。

我尝试将其转换为hex2bin,然后我习惯使用函数包将其转换为二进制文件,但它不起作用。

如何将随机字节转换为二进制?

1 个答案:

答案 0 :(得分:1)

random_bytes返回二进制数据,但不是可读格式。如果您想将其实际表示为1和0的字符串,则需要先使用PHP的bin2*函数之一进行转换,然后使用base_convert进行转换回:

<?php
function random_binary($bytes) {
  return base_convert(bin2hex(random_bytes($bytes)), 16, 2);
}

echo random_binary(1);

// 10000011

这只能达到系统的整数限制(在64位系统上可能是2 ^ 63-1)。如果您已安装GMP扩展程序,则可以使用以下任意精度:

<?php
function random_binary($bytes) {
  $hex = bin2hex(random_bytes($bytes));
  return gmp_strval(gmp_init($hex, 16), 2);
}

echo random_binary(40);

// 10000000101110000010011111001011011100111110...