我正在使用此功能http://php.net/manual/fr/function.random-bytes.php 我想把这个随机字节转换成二进制视图。
我尝试将其转换为hex2bin,然后我习惯使用函数包将其转换为二进制文件,但它不起作用。
如何将随机字节转换为二进制?
答案 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...