2014-10-08 266 views
0

如何将数字转换为UTF8字符?如何将数字转换为UTF8字符?

它不能是一个CTFE函数,因为输入参数在运行时期间是变化的。我想这必须有一个std函数,但我无法找到它。谢谢。

import std.stdio, std.conv; 

char utf8_RT(int nbr) 
{ 
    return to!char(nbr); 
} 
void main(string args[]) 
{ 
    assert(utf8_RT(2665) == '\u2665'); 
} 

明显失败。

+0

“数字”,“转换”和“UTF8字符”是什么意思? (UTF-8是Unicode的传输编码;它定义了字符的编码,而不是字符本身。) – 2014-10-08 17:29:27

回答

3

我不知道你的意思是“UTF8 char”。

如果你想要一个UTF-32字符(即dchar),你可以简单地使用dchar(2665)

如果您想要一个UTF-8字符串(将一个Unicode字符编码为一个或多个UTF-8代码单元,即字节),则可以使用to!string(dchar(2665))。不要忘记import std.conv

用您的int变量的名称替换2665自然变量。

+1

稍微扩展一下,'char'是一个UTF-8编码单元,但您试图获得一个UTF-8编码点可以(并在你的例子中)是多个代码单元。您可以使用'string'来存储Cyber​​Shadow的建议,因为'string'只是'immutable(char)[]'的别名。 另一个选择是'std.utf.encode',它接受一个4字符长的静态数组结果参数。 – eco 2014-10-08 17:11:12

+0

哦!我错过了D中的一些东西,直到现在我正在考虑'char'作为隐藏一些'ubyte []'的“顶层布局”。 f..k。 – 2014-10-08 17:21:17

+0

@ user3661500好吧,如果你被这样的基本东西搞糊涂了,我建议你阅读D书上的这本书:http://ddili.org/ders/d.en/index.html – 2014-10-08 18:40:24