2014-09-03 176 views
1

我想將二進制數據寫入文件以進行輔助哈希表操作,然後使用stream.rawRead()將其讀回。我將如何將字符串轉換爲D中的二進制文件。如果可以,我寧願不使用任何第三方庫。謝謝有沒有辦法將字符串轉換爲二進制D

回答

4

內置模塊std.utf有轉換爲和來自utf編碼(utf8與ascii兼容)的方法。

如果你想使用原始讀取,你應該首先寫入字符串的長度,這樣在閱讀時你就知道字符串有多少個字節。

+1

這就是我想要讓我開始。謝謝 – Coldstar 2014-09-03 12:54:59

3

附註 - 如果你的字符串是ASCII,它是非常簡單的:

// following will not work: 
// ubyte[] stringBytes = cast(ubyte[]) "Добар дан!".dup; 

ubyte[] stringBytes = cast(ubyte[]) "Hello world".dup; 
writeln(stringBytes); 

char[] charr = cast(char[]) stringBytes; 
writeln(charr); 
string str = to!string(charr); 
writeln(str); 

輸出:

[72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] 
Hello world 
Hello world 

由於拉契特指出的那樣,你將需要某種Unicode轉換的.. 。

+1

哇,這兩個建議已經發現!謝謝你和棘輪巨大的怪胎。 – Coldstar 2014-09-03 15:38:08

相關問題