export function bswap(value: T): T { assert(sizeof() == 1 || sizeof() == 2 || sizeof() == 4 || sizeof() == 8); if (sizeof() == 2) { return bswap16(value); } else if (sizeof() == 4) { return ( rotl(value & 0xFF00FF00, 8) | rotr(value & 0x00FF00FF, 8) ); } else if (sizeof() == 8) { let a: u64 = (value >> 8) & 0x00FF00FF00FF00FF; let b: u64 = (value & 0x00FF00FF00FF00FF) << 8; let v: u64 = a | b; a = (v >> 16) & 0x0000FFFF0000FFFF; b = (v & 0x0000FFFF0000FFFF) << 16; return rotr(a | b, 32); } return value; } export function bswap16(value: T): T { assert(sizeof() == 1 || sizeof() == 2 || sizeof() == 4); if (sizeof() == 2 || sizeof() == 4) { return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000)); } return value; }