RRM*_*RRM 1 c# ascii character-encoding
将字节数组转换为字符串然后将字符串转换回字节数组时,我得到奇怪的结果.
试试这个:
byte[] b = new byte[1];
b[0] = 172;
string s = Encoding.ASCII.GetString(b);
byte[] b2 = Encoding.ASCII.GetBytes(s);
MessageBox.Show(b2[0].ToString());
Run Code Online (Sandbox Code Playgroud)
对我来说,结果并不像我期望的那样,但是...... 63.
为什么会这样?
为什么会这样?
因为ASCII仅包含最多127的值.
当面对对给定编码无效的二进制数据时,Encoding.GetString可以提供替换字符或抛出异常.在这里,它使用的替换字符?.
目前尚不清楚你想要达到的目标,但是:
Convert.ToBase64String改用; 千万不能尝试使用的编码,因为你没有真正代表文本.您可以使用Convert.FromBase64String然后解码.Encoding.ASCII通常是一个糟糕的选择,当然包括172字节的二进制数据不是 ASCII文本Encoding.Default除非你真的知道数据是你正在使用的平台的默认编码.如果你做出选择,使用UTF-8是一个很好的选择.