[英]C# char into int bigger than 256
我需要将一些char转换为int值但大于256.这是我将int转换为char的函数。 我需要逆转它
public static string chr(int number)
{
return ((char)number).ToString();
}
这个函数不起作用 - 它只返回0-256, ord(chr(i))==i
public static int ord(string str)
{
return Encoding.Unicode.GetBytes(str)[0];
}
问题是你的ord
函数将字符串的字符截断为第一个字节,由UNICODE编码解释。 这个表达
Encoding.Unicode.GetBytes(str)[0]
// ^^^
返回byte
数组的初始元素,因此它必须保持在0..255范围内。
您可以按如下方式修复您的ord
方法:
public static int Ord(string str) {
var bytes = Encoding.Unicode.GetBytes(str);
return BitConverter.ToChar(bytes, 0);
}
因为你不太关心编码而且你直接在你的chr()
函数中将一个int
为一个char
,那么为什么你不能简单地尝试另一种方法呢?
Console.WriteLine((int)'\x1033');
Console.WriteLine((char)(int)("\x1033"[0]) == '\x1033');
Console.WriteLine(((char)0x1033) == '\x1033');
char在C#中长度为2个字节(UTF-16编码)
char c1; // TODO initialize me
int i = System.Convert.ToInt32(c1); // could be greater than 255
char c2 = System.Convert.ToChar(i); // c2 == c1
MSDN上的System.Convert: https : //msdn.microsoft.com/en-us/library/system.convert(v = vs.110).aspx
字符和字节在C#中不是一回事。 char和int之间的转换很简单:(char)intValue或(int)myString [x]。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.