public static void Main()
decimal testDec = 1211111.111111M;
Console.WriteLine("Original value: " + testDec);
Console.WriteLine("-----------------------------------------------------");
var testBytes = Encode(testDec);
Console.WriteLine("Encoded source bytes:" + ToString(testBytes));
Console.WriteLine("-----------------------------------------------------");
var result = Decode(testBytes);
var resultBytes = Encode(result);
Console.WriteLine("Encoded result bytes:" + ToString(resultBytes));
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine("Decoded value: " + result);
public static decimal Decode(byte[] bytes)
int[] ints = new int[bytes.Length / 4];
for (int i = 0; i < ints.Length; i += 4)
ints[index] = BitConverter.ToInt32(bytes, i);
decimal dec = new decimal(ints);
public static byte[] Encode(decimal val)
int[] ints = decimal.GetBits(val);
byte[] retVal = new byte[ints.Length * 4];
for (int i = 0; i < ints.Length; i++)
byte[] bytes = BitConverter.GetBytes(ints[i]);
bytes.CopyTo(retVal, index);
public static string ToString(byte[] bytes){
return String.Join(" ", bytes);
public static string ToString(int[] bytes){
return String.Join(" ", bytes);