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