TrimArray() simplification
[NovacoinLibrary.git] / Novacoin / Interop.cs
index f4c1e2e..54768cf 100644 (file)
@@ -18,6 +18,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text;
 
 namespace Novacoin
@@ -28,6 +29,32 @@ namespace Novacoin
     public class Interop
     {
         /// <summary>
+        /// Convert array of unsigned integers to array of bytes.
+        /// </summary>
+        /// <param name="values">Array of unsigned integer values.</param>
+        /// <returns>Byte array</returns>
+        public static byte[] LEBytes(uint[] values)
+        {
+            var result = new byte[values.Length * sizeof(uint)];
+            Buffer.BlockCopy(values, 0, result, 0, result.Length);
+
+            return result;
+        }
+
+        /// <summary>
+        /// Convert byte array to array of unsigned integers.
+        /// </summary>
+        /// <param name="bytes">Byte array.</param>
+        /// <returns>Array of integers</returns>
+        public static uint[] ToUInt32Array(byte[] bytes)
+        {
+            var result = new uint[bytes.Length / sizeof(uint)];
+            Buffer.BlockCopy(bytes, 0, result, 0, bytes.Length);
+
+            return result;
+        }
+
+        /// <summary>
         /// Reverse byte array
         /// </summary>
         /// <param name="source">Source array</param>
@@ -56,6 +83,25 @@ namespace Novacoin
             return bytes;
         }
 
+        public static byte[] TrimArray(byte[] bytes)
+        {
+            int trimStart = bytes.Length - 1;
+            while (trimStart >= 0 && bytes[trimStart] == 0)
+            {
+                trimStart--;
+            }
+
+            return bytes.Take(trimStart + 1).ToArray();
+        }
+
+        public static byte[] AppendWithZeros(byte[] bytes, int nTargetLen=32)
+        {
+            var result = new byte[nTargetLen];
+            bytes.CopyTo(result, 0);
+
+            return result;
+        }
+
         public static string ToHex(byte[] bytes)
         {
             var sb = new StringBuilder();