有没有办法在D中将字符串转换为二进制

时间:2014-09-03 12:26:58

标签: d

我想将二进制数据写入文件以进行辅助散列表操作,然后使用stream.rawRead()将其读回。如何在D中将字符串转换为二进制文件。如果可以的话,我宁愿不使用任何第三方库。谢谢

3 个答案:

答案 0 :(得分:4)

内置模块std.utf具有与utf编码进行转换的方法(utf8与ascii兼容)。

如果你想使用原始读取,你应该首先编写字符串的长度,这样在读取时你知道字符串的字节数。

答案 1 :(得分: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

正如Ratched指出的那样,你需要某种unicode转换......

答案 2 :(得分:0)

另一个选项是representation

import std.stdio, std.string;

void main() {
   auto s = "March";
   auto a = s.representation;
   a.writeln; // [77, 97, 114, 99, 104]
}

How can I speed up MSI package install and uninstall?