public static long ToInt64BE(byte[] buffer, int offset = 0)
{
var value = 0L;
value |= (long)buffer[offset++] << 56;
value |= (long)buffer[offset++] << 48;
value |= (long)buffer[offset++] << 40;
value |= (long)buffer[offset++] << 32;
value |= (long)buffer[offset++] << 24;
value |= (long)buffer[offset++] << 16;
value |= (long)buffer[offset++] << 8;
value |= (long)buffer[offset++];
return value;
}