float の配列がpublic static List<float> myData = new List<float>();
あります。それらをビッグ エンディアンのバイト配列に変換し、UDP 接続で送信する必要があります。それを行う方法がわかりません。どんな助けでも大歓迎です!
質問する
2324 次
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];
}
}
data
float のビット表現をビッグエンディアンのバイト順で含むバイト配列になります
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 に答える