Issue
I’m using this function https://php.net/random_bytes
and i would to convert this random bytes to a binary view.
I’ve tried to convert it to hex2bin and then i used to function pack to convert it to a binary but it doesn’t work.
How can convert a random bytes to a binary ?
Solution
random_bytes
returns binary data, but not in a readable format. If you want to actually represent it as a string of 1s and 0s, you’ll need to first convert it using one of PHP’s bin2*
functions, then use base_convert
to convert it back:
<?php
function random_binary($bytes) {
return base_convert(bin2hex(random_bytes($bytes)), 16, 2);
}
echo random_binary(1);
// 10000011
This will only work up to the system’s integer limit (likely 2^63-1 on a 64-bit system). If you’ve got the GMP extension installed, you can use the following for arbitrary precision:
<?php
function random_binary($bytes) {
$hex = bin2hex(random_bytes($bytes));
return gmp_strval(gmp_init($hex, 16), 2);
}
echo random_binary(40);
// 10000000101110000010011111001011011100111110...
Answered By – iainn
This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0