każdy wydaje się być ignorowanie kodowanie bajt polecenia swojego oczekiwano wydajność. Klasa BitConverter
używa stałego kodowania (zazwyczaj Little-Endian, IIRC). Zakłada się, że wyjście w przykładzie jest typu Big-Endian. W idealnym świecie wystarczyłaby sama matematyka, ale łatwiej jest użyć Array.Reverse
, a następnie użyć wbudowanej klasy BitConverter
.
są tam pewnie będzie kupa odpowiedzi zanim mogę pisać to tak tutaj jest naprawdę szybki kawałek kodu niebezpieczny:
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;
}
'uint' wynosi 4 bajty, ale masz 6 bajty tam. W każdym razie, czy znasz klasę BitConverter? – Ani
Po prostu zrób matematykę: 'srno [0] * 0x10000000000 + srn0 [1] * 0x100000000 ...'. Lub cokolwiek. –
@Ani: ok nie ma problemu, powiedz mi o ulongu? Klasa BitConverter potrzebuje indeksu Nie chcę dla indeksu pertikularnego Chcę przekonwertować całą tablicę – Kevan