/// <summary> /// Pads a non standard unsigned integer to 64 bit. /// </summary> /// <param name="dat">UInt64 containing non standard integer</param> /// <param name="width">Width of the non standard integer</param> /// <returns></returns> public static UInt64 PadU64(UInt64 dat, Int32 width) { return dat.Bits(width - 1, 0); }
/// <summary> /// Pads a non standard signed integer to 64 bit. /// </summary> /// <param name="dat">UInt64 containing non standard integer</param> /// <param name="width">Width of the non standard integer</param> /// <returns></returns> public static Int64 PadS64(UInt64 dat, Int32 width) { // Assuming that highest bit is sign bit Boolean sign = (dat & (1UL << width - 1)) != 0; UInt64 value = dat.Bits(width - 2, 0); // if the value is negative... if (sign) return (long) (value - ((ulong) Math.Pow(2, width - 1))); // Get 2's complement of the value // if it is positive, return value return (Int64) value; }