-1

float の配列がpublic static List<float> myData = new List<float>();あります。それらをビッグ エンディアンのバイト配列に変換し、UDP 接続で送信する必要があります。それを行う方法がわかりません。どんな助けでも大歓迎です!

4

2 に答える 2

3
int width = sizeof(float);
byte[] data = new byte[myData.Count * width];

for (int i = 0; i < myData.Count; ++i)
{
    byte[] converted = BitConverter.GetBytes(myData[i]);

    if (BitConverter.IsLittleEndian)
    {
        Array.Reverse(converted);
    }

    for (int j = 0; j < width; ++j)
    {
        data[i * width + j] = converted[j];
    }

}

datafloat のビット表現をビッグエンディアンのバイト順で含むバイト配列になります

UDP で送信するには、次のようにします。

Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress serverAddr = IPAddress.Parse("127.0.0.1");
IPEndPoint endPoint = new IPEndPoint(serverAddr, 13);
sock.SendTo(data, endPoint);
于 2012-11-28T14:32:27.437 に答える
0

次のことを試してください。

    byte[] array=null;
    List<float> myData = new List<float>();
    myData.Add(43.1f);
    myData.Add(42.1f);
    myData.Add(41.1f);
    myData.Add(40.1f);
    foreach (float a in myData)
       array = BitConverter.GetBytes(a);
    //printing
    for (int i = 0; i < array.Length; i++)
    {
        Console.WriteLine(array[i]);
    }

出力:

出力

お役に立てれば。

于 2012-11-28T14:38:45.957 に答える