【发布时间】:2021-07-01 14:07:39
【问题描述】:
我将 ASCII 1251 表用于俄语字母。所以我需要一个 C# 函数来将 char 转换为 1251 十进制代码,反之亦然。
例如俄语“а”是 224,219 是“Ы”。
有什么方法可以不使用所有字母的硬编码值的字典吗?
【问题讨论】:
我将 ASCII 1251 表用于俄语字母。所以我需要一个 C# 函数来将 char 转换为 1251 十进制代码,反之亦然。
例如俄语“а”是 224,219 是“Ы”。
有什么方法可以不使用所有字母的硬编码值的字典吗?
【问题讨论】:
只需使用 Encoding 类。
var enc = Encoding.GetEncoding(1251);
Console.WriteLine(enc.GetBytes("Ы")[0]); //will print 219
Console.WriteLine(enc.GetString(new byte []{219})); //will pring Ы
【讨论】:
enc.GetBytes("ЫЫЫЫЫ") 给了我 [219, 219, 219, 219, 219]。最奇怪的是new byte。那是什么意思?我知道我们正在创建一个新的字节对象数组,但是我可以将很多值传递给这个 { some values }
GetBytes 将返回字节数组。所以,我只得到第一个字节来显示单个字符的确切输出。如果您将传递整个单词,那么您将获得整个单词的字节(因此,您的示例是正确的)。 new byte[]{219} 只是一个带有初始化的数组声明,所以它是一个元素的字节数组。你绝对可以像这样传递许多值:new byte[]{1, 2, 3, etc}。你也可以只传递一个单独创建的数组。