【问题标题】:How to convert base64 string to binary array using php如何使用php将base64字符串转换为二进制数组
【发布时间】:2011-04-14 07:20:32
【问题描述】:

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

cuVrcYvlqYze3OZ8Y5tSqQY205mcquu0GsHkgXe4bPg=

我试过base64_decode,输出是。

råkq‹å©ŒÞÜæ|c›R©6Ó™œªë´Áäw¸lø

我想我可能做错了什么。感谢任何将 base64 字符串转换为二进制数组的帮助。

谢谢

【问题讨论】:

  • 你期望什么样的数据?
  • 您将二进制数据解释为文本,这显然不是您想要的。二进制数组到底是什么意思?
  • 它看起来不是一个有效的 base64 编码字符串 - 您是自己编码该字符串,还是从其他地方获得的?
  • xil3,如果您期望文本作为输出,那么不,base64 编码可能不正确。但是,base64 也经常用于编码二进制数据(不应被解释为纯文本)
  • 我是从应用程序提供商那里得到的。我希望输出这样的事情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 SPAN>

标签: php cakephp binary base64


【解决方案1】:

喜欢这个

$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);但它不工作。难道我做错了什么?感谢您的帮助。
【解决方案2】:

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

您可能已经在做正确的事了。您的错误在于期望二进制数据表示为“0100101010”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2010-11-10
    • 2012-09-01
    • 2015-01-02
    相关资源
    最近更新 更多