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 エンコーディングでは、3 バイトの入力をエンコードするために 4 文字が必要です。出力配列を拡大する必要があります。

于 2012-07-15T22:10:07.910 に答える
1

バイト配列を文字列に変換する方法の 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 に答える