当我做的时候
string s = Encoding.Unicode.GetString(a);
byte[] aa = Encoding.Unicode.GetBytes(s);
我有不同的数组 (a != aa) 。 为什么?
但是我什么时候这样做呢?没关系
string s = Encoding.Default.GetString(a);
byte[] aa = Encoding.Default.GetBytes(s);
最佳答案
那是因为你使用的是反向编码。编码用于将字符串编码为字节,然后再次编码为字符串。
在一种编码中,每个字符都有一组对应的字节,但并不是每组字节都必须有一个对应的字符。这就是为什么您不能将任意字节解码为字符串的原因。
使用编码 Default
它会以这种方式滥用它,因为它只为每个字符使用一个字节,而它恰好有一个字符用于每个字节代码。不过,以这种方式使用它仍然没有意义。
关于c# - 数组和字符串编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14321634/