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