如何使用php将base64字符串转换为二进制数组

7

我有一个base64编码的字符串,看起来像这样。

cuVrcYvlqYze3OZ8Y5tSqQY205mcquu0GsHkgXe4bPg=

我尝试了base64_decode,输出如下:
råkq‹å©ŒÞÜæ|c›R©6Ó™œªë´Áäw¸lø

我觉得我可能做错了什么。我需要帮助将base64字符串转换为二进制数组。

谢谢。


2
你期望什么类型的数据? - Gumbo
你正在将二进制数据解释为文本,这显然不是你想要的。你所说的二进制数组具体指什么? - Delan Azabani
看起来这不是一个有效的base64编码字符串 - 你是自己编码的还是从其他地方获取的? - xil3
xil3,如果您期望输出文本,则很可能base64编码不正确。然而,base64经常用于编码二进制数据(这不应被解释为纯文本)。 - Delan Azabani
我从应用程序提供商那里得到了它。我期望的输出类似于这样 01110010 11100101 01101011 01110001 10001011 11100101 10101001 10001100 11011110 11011100 11100110 01111100 01100011 10011011 01010010 10101001 00000110 00110110 11010011 10011001 10011100 10101010 11101011 10110100 00011010 11000001 11100100 10000001 01110111 10111000 01101100 11111000。 - Nick
2个回答

8

like this

$a = base64_decode("cuVrcYvlqYze3OZ8Y5tSqQY205mcquu0GsHkgXe4bPg=");
$b = array();
foreach(str_split($a) as $c)
    $b[] = sprintf("%08b", ord($c));
print_r($b);

谢谢。我正在尝试使用base64_decode($key)解码并创建身份验证签名,如下所示hash_hmac("sha1", $ID, base64_decode($key), true);但是它没有起作用。我做错了什么吗?感谢您的帮助。 - Nick

0

你已经从base64_decode中获取到了二进制数据(如果编码数据确实是二进制的),只是这些二进制数据被你输出到(浏览器?)时被解释为某些文本的编码。一个“0011010110011001”的输出本身也只是文本,它将使用某个(不同的)二进制流进行编码。与普遍认为的相反,计算机在内部并不使用1和0。如果你想以1和0的形式可视化二进制数据,你需要自己进行二进制/文本转换。虽然这通常是一件毫无意义的事情。

你可能已经做对了。你的错误在于期望二进制数据被表示为“0100101010”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接