2011-03-30 616 views
1

我有蒙戈的二進制數據的最初在C#GUID:我怎麼能轉換二進制數據(BSON BinData類型:3)轉換成UTF-8字符串?

BinData(3,"QaQPthSsOkat01BUvxApZQ==") 

我從10gen公司的Ruby驅動程序中提取數據,並希望值作爲一個字符串。我使用unpack和我得到了我認爲是ASCII碼的數組,但仔細觀察上面有127

puts foo["FooID"].unpack("U*") 

>> 65 
>> 164 
>> 15 
>> 182 
>> 20 
>> 172 
>> 58 
>> 70 
>> 173 
>> 211 
>> 80 
>> 84 
>> 191 
>> 16 
>> 41 
>> 101 

puts foo["FooID"].to_s.unpack("A*") 

>> A???:F??PT?)e 

我應該如何解析這個數據值?有沒有我應該使用的解壓縮選項,還是有我需要調用的BSON方法?

我使用Ruby 1.9.2和10gen的最新蒙戈寶石。如果您想要了解更多詳情,請在評論中告知我,謝謝。

+0

尾隨等號是,它只是Base64編碼的指示。 – BalusC 2011-03-30 03:49:49

回答

1

一個GUID/UUID是一個16字節的整數,所以unpack('C*')可能是你想要的東西。但是,您應該將結果與C#的結果進行比較,以確保您獲得正確的字節順序。我猜測C#將UUID視爲16字節的簡單列表而不是大整數,因此字節順序可能不是問題; OTOH,最好檢查並確定。

根據您需要什麼,你可能沒有把它解壓到在所有的GUID做的,只是把它當作16個字節的不透明序列就足夠了。

相關問題