Jeder einzustellen scheint die Byte-Reihenfolge Codierung ignoriert werden seine erwartete Ausgabe. Die Klasse BitConverter
verwendet eine feste Codierung (normalerweise Little-Endian, IIRC). Die Ausgabe im Beispiel wird als Big-Endian angenommen. In einer perfekten Welt würden Sie nur die Mathematik selbst machen, aber es ist einfacher zu verwenden Array.Reverse
dann verwenden Sie die eingebaute BitConverter
Klasse.
Es ist wahrscheinlich ein Haufen Antwort sein, bevor ich diese so um eine Nachricht schreiben zu bekommen ist ein wirklich schnelles Stück unsicheren Code:
public static unsafe ulong ToULong(byte[] values)
{
byte* buffer = stackalloc byte[8];
if (BitConverter.IsLittleEndian)
Array.Reverse(values);
System.Runtime.InteropServices.Marshal.Copy(values, 0, (IntPtr)buffer, values.Length);
return *(ulong*)buffer;
}
A 'uint' ist 4 Bytes, aber du hast 6 bekommst Bytes dort. Kennt ihr auf jeden Fall die Klasse "BitConverter"? – Ani
Rechnen Sie einfach: 'srno [0] * 0x10000000000 + srn0 [1] * 0x100000000 ...'. Oder Wasauchimmer. –
@Ani: ok kein Problem, sag mir für ulong? BitConverter Klasse brauchen Index Ich will nicht für perticular Index Ich möchte ganze Array konvertieren – Kevan