<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776478</guid>
        <pubDate>Sat, 18 Aug 2018 17:43:46 +0000</pubDate>
        <title>Числа в формате PIC с плавающей запятой</title>
        <link>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776478</link>
        <description><![CDATA[Pit-Bul: проблема крылась не в алгоритме преобразования а в том что пакет модбаза почему то у татар задом наперед идет )))]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Compact Framework</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776365</guid>
        <pubDate>Fri, 17 Aug 2018 01:02:51 +0000</pubDate>
        <title>Числа в формате PIC с плавающей запятой</title>
        <link>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776365</link>
        <description><![CDATA[Pit-Bul: тип byte не может, но в массиве храниться знак, который сбрасывается в 20й строчке, но почему опять вылазит не понятно]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Compact Framework</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776351</guid>
        <pubDate>Thu, 16 Aug 2018 15:34:39 +0000</pubDate>
        <title>Числа в формате PIC с плавающей запятой</title>
        <link>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776351</link>
        <description><![CDATA[Gonarh: Тип byte по определению не может быть отрицательным. Переполнение?]]></description>
        <author>Gonarh</author>
        <category>.NET: Compact Framework</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776319</guid>
        <pubDate>Thu, 16 Aug 2018 06:54:44 +0000</pubDate>
        <title>Числа в формате PIC с плавающей запятой</title>
        <link>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776319</link>
        <description><![CDATA[Pit-Bul: ндааа, не совсем решен оказался вопрос, в боевом режиме почему то все значения идут с минусом, по величине значения похоже на правду, но вот откуда минус лезет не пойму]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Compact Framework</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776314</guid>
        <pubDate>Thu, 16 Aug 2018 04:17:05 +0000</pubDate>
        <title>Числа в формате PIC с плавающей запятой</title>
        <link>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776314</link>
        <description><![CDATA[Pit-Bul: нашел код на Борланд С++, может кто силен и поможет перевести код на C#<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">float PICtoIARfloat(unsigned char *PICfloat)</div><div class="code_line">{</div><div class="code_line">union</div><div class="code_line">{</div><div class="code_line">float i;</div><div class="code_line">unsigned char Byte[4]; </div><div class="code_line">} Number;</div><div class="code_line">//Первый байт float IAR</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[0] = 0x00;</div><div class="code_line">//Второй байт</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[1] = *(PICfloat+0);</div><div class="code_line">//Третий байт</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[2] = *(PICfloat+1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[2] &amp;= 0x7F; //Сброс знака</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (*(PICfloat+2) &amp; 0x01)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//Если мл.бит установлен</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[2] |= 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">//Четвертый байт</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[3] = *(PICfloat+2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[3] &#62;&#62;= 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (*(PICfloat+1) &amp; 0x80)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//Если знак отрицательный</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[3] |= 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Number.Byte[3] &amp;= 0x7F;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">return Number.i;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-08-16T04:58:22+00:00">16.08.18, 04:58</time></span></span><br>
у меня получилось вот что<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">static void Main(string[] args)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; byte[] send = new byte[3] {0x65, 0x29, 0x8A};</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine(PICtoIARfloat(send));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.ReadLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static float PICtoIARfloat(byte[] PICfloat)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;byte[] bt = new byte[4];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Первый байт float IAR</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[0] = 0x00;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Второй байт</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[1] = PICfloat[0];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Третий байт</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[2] = PICfloat[1];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[2] &amp;= 0x7f; &nbsp;//Сброс знака</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((PICfloat[2] &amp; 0x01) == 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Если мл.бит установлен</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[2] |= 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Четвертый байт</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] = PICfloat[2];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] &#62;&#62;= 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((PICfloat[1] &amp; 0x80)==1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Если знак отрицательный</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] |= 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] &amp;= 0x7F;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ToFloat(bt);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static float ToFloat(byte[] input)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;byte[] newArray = new[] { input[2], input[3], input[0], input[1] };</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return BitConverter.ToSingle(newArray, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><br>
<br>
но выдает не то что надо, результат должен быть 2710,313 ((( <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-08-16T04:59:19+00:00">16.08.18, 04:59</time></span></span><br>
и еще, результат почему то в экспотенциальном виде выдает <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-08-16T05:03:53+00:00">16.08.18, 05:03</time></span></span><br>
Вопрос решен, кому интересно вот код )))<br>
<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class Program</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static void Main(string[] args)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; byte[] send = new byte[3] {0x65, 0x29, 0x8A};</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine(PICtoIARfloat(send));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.ReadLine();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static float PICtoIARfloat(byte[] PICfloat)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;byte[] bt = new byte[4];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Первый байт float IAR</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[0] = 0x00;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Второй байт</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[1] = PICfloat[0];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Третий байт</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[2] = PICfloat[1];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[2] &amp;= 0x7f; &nbsp;//Сброс знака</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((PICfloat[2] &amp; 0x01) &#62; 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Если мл.бит установлен</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[2] |= 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Четвертый байт</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] = PICfloat[2];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] &#62;&#62;= 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((PICfloat[1] &amp; 0x80)&#62;0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Если знак отрицательный</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] |= 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bt[3] &amp;= 0x7F;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ToFloat(bt);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static float ToFloat(byte[] input)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return BitConverter.ToSingle(input, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Compact Framework</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776311</guid>
        <pubDate>Thu, 16 Aug 2018 02:43:28 +0000</pubDate>
        <title>Числа в формате PIC с плавающей запятой</title>
        <link>https://forum.sources.ru/index.php?showtopic=413406&amp;view=findpost&amp;p=3776311</link>
        <description><![CDATA[Pit-Bul: Вот никогда с этим не сталкивался, и не найду инфы никак. Как преобразовывать такие данные. Данные приходят с прибора по Modbas RTU в виде старший байт мантиссы и младший байт мантиссы и порядок. Как это дело преобразовать в число не пойму. В руководстве написано что числа передаются  в формате PIC с плавающей запятой, что это за формат и как с ним быть ?]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Compact Framework</category>
      </item>
	
      </channel>
      </rss>
	