将char []转换为byte []会导致更高的计数

时间:2015-10-28 10:16:30

标签: c# encoding character-encoding type-conversion bytearray

我试图将char数组转换为字节数组。

char[] cc = new char[] { ((char)(byte)210) }; // Count = 1
byte[] b = System.Text.Encoding.UTF8.GetBytes(cc); // Count = 2

转换导致我的字节数组{195, 146}有2个条目 我猜这是编码的问题。任何帮助表示赞赏。

面对一些问题后,为了测试,我已经写了这两行,所以不介意这种风格。

由于

2 个答案:

答案 0 :(得分:1)

UTF-8可以使用多个字节来存储字符。它只使用一个字节表示0-127范围内的ASCII字符,其他字符需要存储两个或多个字节。

您正在编码ASCII字符210,它来自扩展的ASCII字符(数值> 127),UTF-8使用两个字节来存储此字符。

答案 1 :(得分:0)

正如M.kazemAkhgary在上述评论中所说:

cc.Select(c=>(byte)c).ToArray();

线索是铸造而不是使用转换。谢谢你!