2

这是我的代码:

byte[] base64String = //this is being set properly
var base64CharArray = new char[base64String.Length];
Convert.ToBase64CharArray(base64String,
                          0,
                          base64String.Length,
                          base64CharArray,
                          0);
var Base64String = new string(base64CharArray);

当我运行它时,调用时出现以下错误Convert.ToBase64CharArray

偏移量没有引用字符串中的位置,或者目标字符数组的长度不足。参数名称:offsetOut

我该如何解决这个问题,所以我可以将我的字节数组转换为字符串,或者有没有更好的方法将字节数组转换为字符串?

4

4 回答 4

5

为什么需要 char 数组?只需将您的byte[] 直接转换为 Base64 string

string base64String = Convert.ToBase64String(myByteArray);
于 2012-07-15T22:11:37.920 回答
1

base64 编码需要 4 个字符来编码 3 个字节的输入。你必须扩大你的输出数组。

于 2012-07-15T22:10:07.910 回答
1

这是一种将字节数组转换为字符串的方法

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); 
} 

你真的不需要担心编码。

更多细节可以在这里找到

于 2012-07-15T22:13:09.310 回答
1

这是一种简单的做法

string System.Text.Encoding.UTF8.GetString(YourbyteArray)
于 2012-07-15T22:13:14.017 回答