<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Преобразование типов данных.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=12901</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12901&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Преобразование типов данных.».]]></description>
		<lastBuildDate>Mon, 14 Aug 2017 13:26:40 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118283#p118283</link>
			<description><![CDATA[<p>Всем откликнувшемся большое спасибо! Код отлично подходит под мои нужды.</p>]]></description>
			<author><![CDATA[null@example.com (Raven)]]></author>
			<pubDate>Mon, 14 Aug 2017 13:26:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118283#p118283</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118173#p118173</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Но в зависимости от целого должно быть как то известно какова возможная точность дроби</p></blockquote></div><p>Не совсем понял, но скорее всего нет:<br /></p><div class="codebox"><pre><code>MsgBox, % FloatHexConverter(123.456) . &quot;`n&quot; . FloatHexConverter(123.456001)

FloatHexConverter(source)  {
   if source is Float
      isSourceFloat := true
   DllCall( &quot;RtlMoveMemory&quot;, isSourceFloat ? &quot;UIntP&quot; : &quot;FloatP&quot;, result
                           , isSourceFloat ? &quot;FloatP&quot; : &quot;UIntP&quot;, source
                           , Ptr, 4 )
   Return isSourceFloat ? Format(&quot;0x{:X}&quot;, result) : result
}</code></pre></div><p>Можно, конечно, добавить параметр, определяющий до какого знака округлять, но имхо это будет не очень красиво, т. к. в случае конвертации float в hex он будет лишним.</p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>примере уже не то число, вместо .456000 выходит .456001</p></blockquote></div><p>Это нормально, действия с float-числами всегда осуществляются с определённой погрешностью, это нужно учитывать.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 12 Aug 2017 10:21:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118173#p118173</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118170#p118170</link>
			<description><![CDATA[<p>Но в зависимости от целого должно быть как то известно какова возможная точность дроби, собственно и в примере уже не то число, вместо .456000 выходит .456001.<br /></p><div class="codebox"><pre><code>
 Hex := FloatHexConverter(99999.99)  ;	max 2
MsgBox, % FloatHexConverter(Hex, 6)

 Hex := FloatHexConverter(9999.999)  ;	max 3
MsgBox, % FloatHexConverter(Hex, 6)

 Hex := FloatHexConverter(999.9999)  ;	max 4
MsgBox, % FloatHexConverter(Hex, 6)

FloatHexConverter(source, Round = 0)  {
   if source is Float
      isSourceFloat := true
   DllCall( &quot;RtlMoveMemory&quot;, isSourceFloat ? &quot;UIntP&quot; : &quot;FloatP&quot;, result
                           , isSourceFloat ? &quot;FloatP&quot; : &quot;UIntP&quot;, source
                           , Ptr, 4 )
   Return isSourceFloat ? Format(&quot;0x{:X}&quot;, result) : result   ;	Round(result, Round)
}

</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 12 Aug 2017 00:52:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118170#p118170</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118169#p118169</link>
			<description><![CDATA[<p>Не, заранее же неизвестно, до какого знака округлять.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 12 Aug 2017 00:13:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118169#p118169</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118168#p118168</link>
			<description><![CDATA[<p>Может ещё Round добавить.</p><div class="codebox"><pre><code>Return isSourceFloat ? Format(&quot;0x{:X}&quot;, result) : Round(result, 3)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 12 Aug 2017 00:09:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118168#p118168</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118167#p118167</link>
			<description><![CDATA[<p>Тогда так:<br /></p><div class="codebox"><pre><code>MsgBox, % FloatHexConverter(123.456)
MsgBox, % FloatHexConverter(0x42F6E979)

FloatHexConverter(source)  {
   if source is Float
      isSourceFloat := true
   DllCall( &quot;RtlMoveMemory&quot;, isSourceFloat ? &quot;UIntP&quot; : &quot;FloatP&quot;, result
                           , isSourceFloat ? &quot;FloatP&quot; : &quot;UIntP&quot;, source
                           , Ptr, 4 )
   Return isSourceFloat ? Format(&quot;0x{:X}&quot;, result) : result
}</code></pre></div><p><img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 11 Aug 2017 23:14:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118167#p118167</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118166#p118166</link>
			<description><![CDATA[<div class="codebox"><pre><code>
MsgBox, % HexToFloat(0x42F6E979)

HexToFloat(x) {
   DllCall(&quot;RtlMoveMemory&quot;, &quot;FloatP&quot;, f, &quot;UIntP&quot;, x, &quot;Uint&quot;, 4)
   Return f
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 11 Aug 2017 22:41:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118166#p118166</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118165#p118165</link>
			<description><![CDATA[<div class="codebox"><pre><code>MsgBox, % FloatToHex(123.456)

FloatToHex(value)
{
   Return Format( &quot;0x{:X}&quot;, DllCall(&quot;MulDiv&quot;, Float, value, Int, 1, Int, 1, UInt) )
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 11 Aug 2017 22:19:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118165#p118165</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118164#p118164</link>
			<description><![CDATA[<div class="codebox"><pre><code>HexToFloat(value)
{
    Return, (1 - 2 * (value &gt;&gt; 31)) * (2 ** ((value &gt;&gt; 23 &amp; 255) - 150)) * (0x800000 | value &amp; 0x7FFFFF)
}

FloatToHex(value)
{
   format := A_FormatInteger
   SetFormat, Integer, H
   result := DllCall(&quot;MulDiv&quot;, Float, value, Int, 1, Int, 1, UInt)
   SetFormat, Integer, %format%
   Return, result
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 11 Aug 2017 19:59:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118164#p118164</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118163#p118163</link>
			<description><![CDATA[<p>Уважаемые форумчане, всем спасибо за развернутые ответы. Был в дороге, поэтому не было меня на форме. Весь предоставляемый код который вы дали, смогу проверить только в понедельник, так как нахожусь в отъезде. Будут дельные советы или какой либо код прошу не стесняться и оставлять все это здесь, на благо общественности. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Raven)]]></author>
			<pubDate>Fri, 11 Aug 2017 19:44:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118163#p118163</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118161#p118161</link>
			<description><![CDATA[<p>Проблема в том что голова уже не варит... пойду отдыхать.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 11 Aug 2017 18:03:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118161#p118161</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118160#p118160</link>
			<description><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p><strong>Raven</strong>, будет возможность, напиши HEX данные для заранее известного real числа, а лучше для двух разных чисел.</p></blockquote></div><p>Это не вы разве писали? Я вам показал, как вы можете сами получить эти данные.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 11 Aug 2017 18:02:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118160#p118160</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118159#p118159</link>
			<description><![CDATA[<p>Так а в чём проблема превратить hex в число по тому же алгоритму, только в обратную сторону?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 11 Aug 2017 18:00:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118159#p118159</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118157#p118157</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Из f31ce7d не получится</p></blockquote></div><div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>(цифры от балды, только суть)</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 11 Aug 2017 17:55:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118157#p118157</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Преобразование типов данных.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=118156#p118156</link>
			<description><![CDATA[<p>Наоборот. В <a href="http://forum.script-coding.com/viewtopic.php?pid=118128#p118128">предыдущей теме</a> мы обсуждали как получать данные из ПЛК (программируемый логический контроллер) с помощью dll. Результат работы dll - HEX строка, являющаяся копией памяти ПЛК в которой содержится значение Real представленное на картинке во втором посте. Из этой HEX строки необходимо получить Float число десятичного вида (123.456).</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 11 Aug 2017 17:53:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=118156#p118156</guid>
		</item>
	</channel>
</rss>
