2014-09-03 120 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

相关问题