2010-09-19 450 views
3

我有base 64編碼的字符串,看起來像這樣。如何將base64字符串轉換爲二進制數組使用php

cuVrcYvlqYze3OZ8Y5tSqQY205mcquu0GsHkgXe4bPg= 

我試過base64_decode和輸出是。

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

我想我可能會做錯事。我感謝任何幫助將base64字符串轉換爲二進制數組。

感謝

+2

你期望什麼樣的數據? – Gumbo 2010-09-19 10:33:24

+0

您正在將二進制數據解釋爲文本,這顯然不是您想要的。二進制數組究竟是什麼意思? – 2010-09-19 10:35:41

+0

看起來這不是一個有效的base64編碼字符串 - 你是自己編碼該字符串還是從其他地方獲得它? – xil3 2010-09-19 11:02:10

回答

3

這樣

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

謝謝。我試圖base64_decode($ key)並創建一個像這樣的認證簽名hash_hmac(「sha1」,$ ID,base64_decode($ key),true);但它不起作用。難道我做錯了什麼?我感謝您的幫助。 – Nick 2010-09-19 11:55:18

0

你已經base64_decode得到的二進制數據回(如果編碼的數據,其實是二進制),僅此二進制數據被解釋爲編碼一些無論你輸出到什麼文本(瀏覽器?)。 「0011010110011001」輸出本身也只能是文本,它將使用一些(不同的)二進制流進行編碼。計算機在內部不適用於1和0,與普遍認爲的相反。如果你想以1和0的形式顯示二進制數據,你需要自己進行二進制/文本轉換。不過,通常這是一件毫無意義的事情。

你可能已經在做正確的事情。你的錯誤在於期待二進制數據被表示爲「0100101010」。