2

byte[]に変換する関数を書き、string「;」を追加しました 各バイトの後。stringここで、文字列を分割してこれを変換したいと思いbyte[]ます (CSV 文字列に似ています)。

public string ByteArrayToString(byte[] byteArray,string s)
{       
    for (int i = 0; i < byteArray.Length; i++)
    {
        s += byteArray[i].ToString() + ";";
    }
    s = s.Substring(0, s.Length - 1);
    return s;
}

この文字列をそのバイト配列に再度変換する関数を作成するにはどうすればよいですか?

4

9 に答える 9

7

これを試して

var byteArray = new byte[] {123, 11, 111};
var stringBytes = string.Join(";", byteArray.Select(b => b.ToString()));
var newByteArray = stringBytes.Split(';').Select(s => byte.Parse(s)).ToArray();
于 2010-11-30T12:03:39.320 に答える
2

;変換するときもを取り除きたいと思います。私はあなたがこのようなことをしたいと思います:

byte[] result = Encoding.UTF8.GetBytes(s.Replace(";",""));

元のバイト配列に実際に;有効なデータが含まれている場合、これは失敗しますが、その場合、「CSV」ファイルが間違ってフォーマットされるため、とにかく多くの問題が発生します。

于 2010-11-30T12:06:30.993 に答える
1

StringBuilderString(パフォーマンスに関して)の代わりに役立ちます。

StringBuilder:

byte[] buffer = System.Text.Encoding.UTF8.GetBytes(objStringBuilder.ToString());

String:

byte[] buffer = System.Text.Encoding.UTF8.GetBytes(objString);
于 2010-11-30T12:02:34.920 に答える
1

分割文字列の使用を検討してください

于 2010-11-30T12:00:10.450 に答える
0

私はあなたがすでに答えを知っていることを知っています...しかし、このコードは問題を解決します。他の誰かに役立つことを願っています.

        int counter= 0;
        string cadena = "8,5,6,3,4,6,3"
        string[] foto = cadena.Split(',');
        byte[] fotoFinal = new byte[foto.Length];
        foreach (string s in foto)
        {
            fotoFinal[contador] = Convert.ToByte(s);
            counter++;
        }
于 2011-03-02T20:02:13.490 に答える
0
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
return encoding.GetBytes(yourStringVariable);
于 2010-11-30T12:04:11.693 に答える
0
str.Split(new char[]{';'}, 
          StringSplitOptions.RemoveEmptyEntries).Select(s => byte.Parse(s)).ToArray();
于 2010-11-30T12:01:20.320 に答える
0

単に:)

public static byte[] Bytes ( this string Key )
{
    return Enumerable.Range(0, Key.Binary().Length / 8 )
                     .Select(Index => Convert.ToByte(
                         Key.Binary().Substring(Index * 8, 8), 2))
                     .ToArray();
}
于 2012-03-09T00:43:14.520 に答える