在C#中将字节数组转换为字符串并返回

时间:2014-05-17 12:14:59

标签: c#

我正在将文件读入字节数组并将字节数组转换为字符串以传递给方法(我无法传递字节数组本身),并且在函数定义中我将字符串重新转换为字节数组。但是两个字节数组(转换前后都不同)

我使用以下导频代码来测试字节数组是否相同。

byte[] bytes = File.ReadAllBytes(@"C:\a.jpg");
 string encoded = Convert.ToBase64String(bytes);
byte[] bytes1 = Encoding.ASCII.GetBytes(encoded);

当我在api调用中使用字节时,它会成功,当我使用bytes1时会抛出异常。请告诉我如何安全地将字节数组转换为字符串并返回,以便两个数组都重复相同。

2 个答案:

答案 0 :(得分:2)

使用此:

byte[] bytes = File.ReadAllBytes(@"C:\a.jpg");
string encoded = Convert.ToBase64String(bytes);
byte[] bytes1 = Convert.FromBase64String(encoded);

答案 1 :(得分:0)

我将发布另一个帖子的回复:

static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    return bytes;
}

static string GetString(byte[] bytes)
{
    char[] chars = new char[bytes.Length / sizeof(char)];
    System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
    return new string(chars);
}

完整主题:How do I get a consistent byte representation of strings in C# without manually specifying an encoding?