Ich habe ein 2d-Array von UInt16s, die ich in rohe Bytes konvertiert habe - ich möchte diese Bytes nehmen und sie zurück in das ursprüngliche 2D-Array konvertieren. Ich habe es geschafft, dies mit einem 2D-Array von Doppel zu machen, aber ich kann nicht herausfinden, wie es mit UInt16 geht.Konvertiere Byte [] in UInt16.
Hier ist mein Code:
UInt16[,] dataArray;
//This array is populated with this data:
[4 6 2]
[0 2 0]
[1 3 4]
long byteCountUInt16Array = dataArray.GetLength(0) * dataArray.GetLength(1) * sizeof(UInt16);
var bufferUInt16 = new byte[byteCountUInt16Array];
Buffer.BlockCopy(newUint16Array, 0, bufferUInt16, 0, bufferUInt16.Length);
//Here is where I try to convert the values and print them out to see if the values are still the same:
UInt16[] originalUInt16Values = new UInt16[bufferUInt16.Length/8];
for (int i = 0; i < 5; i++)
{
originalUInt16Values[i] = BitConverter.ToUInt16(bufferUInt16, i * 8);
Console.WriteLine("Values: " + originalUInt16Values[i]);
}
Die print-Anweisung zeigt nicht die gleichen Werte wie die ursprünglichen 2D-Array. Ich bin ziemlich neu beim Codieren mit Bytes und UInt16, also lerne ich das meiste dabei.
* Außerdem weiß ich, dass der letzte Teil meines Codes keine Werte in ein 2D-Array wie das ursprüngliche Array schreibt - im Moment versuche ich nur die Werte auszudrucken, um zu sehen, ob sie sogar mit den Originaldaten übereinstimmen .
'/ 8',' * 8'- w hy 8 und nicht sizeof (UInt16) was 2 ist? Von "double" übernehmen :) –