C#ByteArray转换为字符串并返回

lor*_*ple 4 c# type-conversion

我有一个uint值,我需要表示为ByteArray和转换为字符串.当我将字符串转换回字节数组时,我发现了不同的值.我正在使用标准的ASCII转换器,所以我不明白为什么我得到不同的值.更清楚这就是我正在做的事情:

byte[] bArray = BitConverter.GetBytes((uint)49694);
string test = System.Text.Encoding.ASCII.GetString(bArray);
byte[] result = Encoding.ASCII.GetBytes(test);
Run Code Online (Sandbox Code Playgroud)

bytearray结果与第一个结果不同:

bArray - >

[0x00000000]: 0x1e
[0x00000001]: 0xc2
[0x00000002]: 0x00
[0x00000003]: 0x00
Run Code Online (Sandbox Code Playgroud)

结果 - >

[0x00000000]: 0x1e
[0x00000001]: 0x3f
[0x00000002]: 0x00
[0x00000003]: 0x00
Run Code Online (Sandbox Code Playgroud)

请注意,两个数组中的字节1不同.

感谢您的支持.

问候

Mar*_*ell 12

string test = System.Text.Encoding.ASCII.GetString(bArray);
byte[] result = Encoding.ASCII.GetBytes(test);
Run Code Online (Sandbox Code Playgroud)

因为原始数据不是ASCII.Encoding.GetString是唯一有意义的,如果你被解码的数据是在编码文本数据.还有别的:你腐败了.如果你想将a存储byte[]为a string,那么base-n是必要的 - 通常是base-64,因为a:它方便地可用(Convert.{To|From}Base64String),而b:你可以将它装入ASCII,所以你很少遇到代码页/编码问题.例如:

byte[] bArray = BitConverter.GetBytes((uint)49694);
string test = Convert.ToBase64String(bArray); // "HsIAAA=="
byte[] result = Convert.FromBase64String(test);
Run Code Online (Sandbox Code Playgroud)