有人知道如何在c#中实现以下c ++代码
c ++
char t = '\0';
t += (char)3;
t的输出等于'\ x3'
如果我在c#中实现相同的代码
char t = '\0';
t += (char)3;
输出将不同t ='\ u0003'
如何在c#中获得相同的结果? 谢谢
答案 0 :(得分:3)
在两种语言中,转义序列\xnn
代表一个具有指定字节值nn
的十六进制字符。
在两种语言中,转义序列\unnnn
代表Unicode代码点nnnn
。
在C#使用的编码中,字节值3对应于Unicode代码点U + 0003。这就是C#输出为\u0003
的原因。
两种语言的代码都做大致相同的事情,并且两种代码运行后,两个t
将存储3
的值。区别在于输出的格式。我不知道如何在C#中获得\u0003
作为输出。 Console.WriteLine
将打印出字符,而不是其Unicode代码点。
由于C#char
的表示方式与C ++中的表示方式不同,因此在C#中实际上无法获得相同的输出。 C ++ char
通常为1个字节,而C#char
s与ushort
一样大。