public static float ReadSingle(BitStreamReader bitStream, int bitLength) => Read(bitStream, b => LittleEndianBitConverter.ToSingle(b), bitLength);
public static double ReadDouble(BitStreamReader bitStream, int bitLength) => Read(bitStream, b => LittleEndianBitConverter.ToDouble(b), bitLength);
public static ulong ReadUInt(BitStreamReader bitStream, int bitLength) => Read(bitStream, b => LittleEndianBitConverter.ToUInt64(b), bitLength);
public static void Write(BitStreamWriter destination, double value, int bitLength) => Write(destination, b => LittleEndianBitConverter.FillBytes(value, b), bitLength);
public static long ReadInt(BitStreamReader bitStream, int bitLength) => Read(bitStream, b => ExtendSignBit(LittleEndianBitConverter.ToInt64(b), bitLength), bitLength);
public static bool ReadBoolean(BitStreamReader bitStream, int bitLength) => Read(bitStream, b => LittleEndianBitConverter.ToBoolean(b), bitLength);
public static byte[] bytes_from_crc64(ulong crc64) => LittleEndianBitConverter.GetBytes(crc64);