<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[SDS PLC/PAC: Měření Energie & OnlineTechnology.cz - [vyřešeno] Převod 4 bytů na číslo float]]></title>
	<link rel="self" href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=1021&amp;type=atom" />
	<updated>2021-03-12T15:12:48Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.sds.an-d.cz/viewtopic.php?id=1021</id>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Převod 4 bytů na číslo float]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=6998#p6998" />
			<content type="html"><![CDATA[<p>Díky moc! Funguje perfektně.</p>]]></content>
			<author>
				<name><![CDATA[dockys]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11705</uri>
			</author>
			<updated>2021-03-12T15:12:48Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=6998#p6998</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Převod 4 bytů na číslo float]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=6993#p6993" />
			<content type="html"><![CDATA[<p>Možností bude více. Tady popíši jednu z nich.</p><p>Nejprve ty bajty uložit do unsigned 32bit typu, tedy v SDS např. &quot;unsigned int&quot;.<br />A ten potom převést přes ukazatel.</p><div class="codebox"><pre><code> unsigned int a;
 float b;

 // nejprve slozit cislo &quot;a&quot; z tech ctyr prichozich bajtu
 a = (b1 &lt;&lt; 24) | (b2 &lt;&lt; 16) | (b3 &lt;&lt; 8) | b4; // samozrejme pozor na poradi, v SDS je vse little-endian, takze ...

 // precteme obsah pameti, tam kde je ulozeno cislo &quot;a&quot; - ale precteme si to jako typ float
 b = *(float *)&amp;a;</code></pre></div><p>Jak jsem napsal, pozor jestli jsou vaše data Big Endian nebo Little Endian - podle toho je potřeba přeházet pořadí při skládání &quot;a&quot;.</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2021-03-12T11:06:36Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=6993#p6993</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[[vyřešeno] Převod 4 bytů na číslo float]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=6992#p6992" />
			<content type="html"><![CDATA[<p>Hezký den, prosím o radu. Načítám data přes RS485 z elektroměru a jednotlivé hodnoty, např. hodnota napětí na jedné fázi je reprezentována jako sekvence 4 bytů. Jsem schopen nějak ve FULL-C z těchto 4 bytů dostat číslo float (Float - Big Endian (ABCD)).</p><p>Tohle mi příjde:<br />[67, 101, 102, 102] </p><p>A tohle z toho má vzniknout: <br />229.4</p><p>Takhle to vypadá např. v Javě:<br /></p><div class="codebox"><pre><code>byte[] bytes = {67, 101, 102, 102};        
float f = ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN).getFloat();
//Výsledek je: 229.4</code></pre></div>]]></content>
			<author>
				<name><![CDATA[dockys]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11705</uri>
			</author>
			<updated>2021-03-12T10:32:44Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=6992#p6992</id>
		</entry>
</feed>
