using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
struct ByteToUlongConverter
{
[FieldOffset(0)]
public byte[] bytes;
[FieldOffset(0)]
public ulong[] ulongs;
public ByteToUlongConverter(byte[] bytes)
{
this.ulongs = null;
this.bytes = bytes;
}
}
public class Test
{
public static void Main()
{
byte[] bytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
ByteToUlongConverter conv = new ByteToUlongConverter(bytes);
foreach (ulong ul in conv.ulongs)
Console.WriteLine($"{ul:X16}");
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXM7CgpbU3RydWN0TGF5b3V0KExheW91dEtpbmQuRXhwbGljaXQpXQpzdHJ1Y3QgQnl0ZVRvVWxvbmdDb252ZXJ0ZXIKewogICAgW0ZpZWxkT2Zmc2V0KDApXQogICAgcHVibGljIGJ5dGVbXSBieXRlczsKCiAgICBbRmllbGRPZmZzZXQoMCldCiAgICBwdWJsaWMgdWxvbmdbXSB1bG9uZ3M7CgogICAgcHVibGljIEJ5dGVUb1Vsb25nQ29udmVydGVyKGJ5dGVbXSBieXRlcykKICAgIHsKICAgICAgICB0aGlzLnVsb25ncyA9IG51bGw7CiAgICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzOwogICAgfQp9CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJYnl0ZVtdIGJ5dGVzID0gbmV3IGJ5dGVbXSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDggfTsKCQlCeXRlVG9VbG9uZ0NvbnZlcnRlciBjb252ID0gbmV3IEJ5dGVUb1Vsb25nQ29udmVydGVyKGJ5dGVzKTsKCgkJZm9yZWFjaCAodWxvbmcgdWwgaW4gY29udi51bG9uZ3MpCgkJICAgIENvbnNvbGUuV3JpdGVMaW5lKCQie3VsOlgxNn0iKTsKCX0KfQ==