Advertisement
tolikpunkoff

functions for get record data items (SxGeoSharp unpack data)

Sep 23rd, 2018
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.91 KB | None | 0 0
  1. private sbyte GetTinuintSigned(byte[] DataArray, int StartPosition)
  2. {
  3.     if (StartPosition >= DataArray.Length)
  4.     {
  5.         return 0;
  6.     }
  7.     else return (sbyte)DataArray[StartPosition];
  8. }
  9.  
  10. private byte GetTinuintUnsigned(byte[] DataArray, int StartPosition)
  11. {
  12.     if (StartPosition >= DataArray.Length)
  13.     {
  14.         return 0;
  15.     }
  16.     else return DataArray[StartPosition];
  17. }
  18.  
  19. private short GetSmallintSigned(byte[] DataArray, int StartPosition)
  20. {
  21.     if (StartPosition >= DataArray.Length + 1)
  22.     {
  23.         return 0;
  24.     }
  25.  
  26.     byte[] buf = new byte[2];
  27.     Array.Copy(DataArray, StartPosition, buf, 0, 2);
  28.     if (RevBO)
  29.     {
  30.         Array.Reverse(buf);
  31.     }
  32.  
  33.     return BitConverter.ToInt16(buf,0);
  34. }
  35.  
  36. private ushort GetSmallintUnsigned(byte[] DataArray, int StartPosition)
  37. {
  38.     if (StartPosition >= DataArray.Length + 1)
  39.     {
  40.         return 0;
  41.     }
  42.  
  43.     byte[] buf = new byte[2];
  44.     Array.Copy(DataArray, StartPosition, buf, 0, 2);
  45.     if (RevBO)
  46.     {
  47.         Array.Reverse(buf);
  48.     }
  49.  
  50.     return BitConverter.ToUInt16(buf, 0);
  51. }
  52.  
  53.  
  54. private int GetMediumintSigned (byte[] DataArray, int StartPosition)
  55. {
  56.     if (StartPosition >= DataArray.Length + 2)
  57.     {
  58.         return 0;
  59.     }
  60.  
  61.     byte[] buf = new byte[4];
  62.  
  63.     Array.Copy(DataArray, StartPosition, buf, 0, 3);
  64.  
  65.     if (RevBO)
  66.     {
  67.         Array.Copy(DataArray, StartPosition, buf, 1, 3);
  68.         Array.Reverse(buf);
  69.     }
  70.     else
  71.     {
  72.         Array.Copy(DataArray, StartPosition, buf, 0, 3);
  73.     }
  74.  
  75.     return BitConverter.ToInt32(buf, 0);
  76. }
  77.  
  78. private uint GetMediumintUnsigned(byte[] DataArray, int StartPosition)
  79. {
  80.     if (StartPosition >= DataArray.Length + 2)
  81.     {
  82.         return 0;
  83.     }
  84.  
  85.     byte[] buf = new byte[4];
  86.  
  87.  
  88.     if (RevBO)
  89.     {
  90.         Array.Copy(DataArray, StartPosition, buf, 1, 3);
  91.         Array.Reverse(buf);
  92.     }
  93.     else
  94.     {
  95.         Array.Copy(DataArray, StartPosition, buf, 0, 3);
  96.     }
  97.  
  98.     return BitConverter.ToUInt32(buf, 0);
  99. }
  100.  
  101. private int GetIntSigned(byte[] DataArray, int StartPosition)
  102. {
  103.     if (StartPosition >= DataArray.Length + 3)
  104.     {
  105.         return 0;
  106.     }
  107.  
  108.     byte[] buf = new byte[4];
  109.  
  110.     Array.Copy(DataArray, StartPosition, buf, 0, 4);
  111.  
  112.     if (RevBO)
  113.     {
  114.         Array.Reverse(buf);
  115.     }
  116.  
  117.     return BitConverter.ToInt32(buf, 0);
  118. }
  119.  
  120. private uint GetIntUnsigned(byte[] DataArray, int StartPosition)
  121. {
  122.     if (StartPosition >= DataArray.Length + 3)
  123.     {
  124.         return 0;
  125.     }
  126.  
  127.     byte[] buf = new byte[4];
  128.  
  129.     Array.Copy(DataArray, StartPosition, buf, 0, 4);
  130.  
  131.     if (RevBO)
  132.     {
  133.         Array.Reverse(buf);
  134.     }
  135.  
  136.     return BitConverter.ToUInt32(buf, 0);
  137. }
  138.  
  139. private float GetFloat(byte[] DataArray, int StartPosition)
  140. {
  141.     if (StartPosition >= DataArray.Length + 3)
  142.     {
  143.         return 0;
  144.     }
  145.  
  146.     byte[] buf = new byte[4];
  147.  
  148.     Array.Copy(DataArray, StartPosition, buf, 0, 4);
  149.  
  150.     if (RevBO)
  151.     {
  152.         Array.Reverse(buf);
  153.     }
  154.  
  155.     return BitConverter.ToSingle(buf, 0);
  156. }
  157.  
  158. private double GetDouble(byte[] DataArray, int StartPosition)
  159. {
  160.     if (StartPosition >= DataArray.Length + 7)
  161.     {
  162.         return 0;
  163.     }
  164.  
  165.     byte[] buf = new byte[8];
  166.  
  167.     Array.Copy(DataArray, StartPosition, buf, 0, 8);
  168.  
  169.     if (RevBO)
  170.     {
  171.         Array.Reverse(buf);
  172.     }
  173.  
  174.     return BitConverter.ToDouble(buf, 0);
  175. }
  176.  
  177. private double GetN16(byte[] DataArray, int StartPosition, int Signs)
  178. {
  179.     short tmpShort = GetSmallintSigned(DataArray, StartPosition);
  180.     return tmpShort / Math.Pow(10, Signs);            
  181. }
  182.  
  183. private double GetN32(byte[] DataArray, int StartPosition, int Signs)
  184. {
  185.     int tmpInt = GetIntSigned(DataArray, StartPosition);
  186.     return tmpInt / Math.Pow(10, Signs);        
  187. }
  188.  
  189. private string GetFixedString(byte[] DataArray, int StartPosition, int Count)
  190. {
  191.     if (StartPosition >= DataArray.Length + Count - 1)
  192.     {
  193.         return null;
  194.     }
  195.    
  196.     //кириллица UTF8 для строк ограниченной длины не поддерживается
  197.     //делаем буфер
  198.     byte[] buf = new byte[Count];
  199.  
  200.     //копируем нужное количество байт в буфер
  201.     Array.Copy(DataArray, StartPosition, buf, 0, Count);
  202.  
  203.     return StringsEncoding.GetString(buf);            
  204. }
  205.  
  206. private int GetBlob(byte[] DataArray, int StartPosition, out string Result)
  207. {            
  208.     int i = StartPosition;            
  209.     List<byte> tmpl = new List<byte>();
  210.     while (DataArray[i] != '\0')
  211.     {                
  212.         tmpl.Add(DataArray[i]);
  213.         i++;                
  214.     }
  215.     i++;
  216.     byte[] buf = tmpl.ToArray();
  217.     Result = StringsEncoding.GetString(buf);
  218.     return i;
  219. }
  220.  
  221. public static float ConvertToFloat(string Value, string DecimalSeparator)
  222. {
  223.     NumberFormatInfo format = new NumberFormatInfo();
  224.     format.NumberDecimalSeparator = DecimalSeparator;
  225.     return Convert.ToSingle(Value, format);
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement