0

重複の可能性:
C#でint [、]をbyte[]に変換する方法

2D文字列配列(string [n、m])をソケット経由で送信したいのですが、バイト配列に変換する必要があります。どうやってやるの?

4

1 に答える 1

0

最初の8バイトを使用して、配列の次元を格納できます。

public static byte[] ToByteArray(string[,] input)
{
    using (var stream = new MemoryStream())
    using (var writer = new BinaryWriter(stream, Encoding.UTF8))
    {
        var rows = input.GetLength(0);
        var cols = input.GetLength(1);
        writer.Write(rows);
        writer.Write(cols);
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                writer.Write(input[i, j]);
            }
        }
        return stream.ToArray();
    }
}

バイト配列を2D文字列配列に変換し直します。

public static string[,] FromByteArray(byte[] input)
{
    using (var stream = new MemoryStream(input))
    using (var reader = new BinaryReader(stream, Encoding.UTF8))
    {
        var rows = reader.ReadInt32();
        var cols = reader.ReadInt32();
        var result = new string[rows, cols];
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                result[i, j] = reader.ReadString();
            }
        }
        return result;
    }
}
于 2012-10-01T18:00:53.090 に答える