<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><font face="Arial">To není 0xa0 0xb0, ale znaky AB, tedy 0x41
0x42. To pole je </font><font face="Arial">uint16_t proto, aby
se s ním rozumně pracovalo, ale pak se přenáší na server jako
sekvence byte. No a já do něj také potřebuji uložit text. Celý
přenos je tak jediný příkaz <br>
</font></p>
<p><font face="Arial">client.write((byte*)A,počet_znaků);</font></p>
<p><font face="Arial">to pole je pochopitelně větší, než 2 znaky.</font><br>
</p>
<pre class="moz-signature" cols="72">Martin Záruba</pre>
<div class="moz-cite-prefix">Dne 31.8.2023 v 8:31 Ladislav Vaiz
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:2b3101a5-82aa-b6e9-fd1a-c19a54f0a9d1@nagano.cz">On
31.08.2023 8:05, Martin Záruba wrote:
<br>
<blockquote type="cite">Mám pole
<br>
<br>
int A[2];
<br>
<br>
potřebuji do něj ale vložit čtyři znaky ABCD. Vymyslel jsem
<br>
<br>
A[0] = ('A' << 8) | 'B';
<br>
A[1] = ('C' << 8) | 'D';
<br>
<br>
nejde to nějak líp? Toto funguje, ale je to docela
nesrozumitelné.
<br>
<br>
</blockquote>
Pokud je to signed char a někdy místo ABCD použijete znaky
>=128, tak vám tam asi začnou přebývat 0xff :-)
<br>
<br>
Doporučuji přetypovat na unsigned.
<br>
<br>
<br>
<br>
#include <stdio.h>
<br>
#include <stdint.h>
<br>
<br>
int main(){
<br>
signed char c1 = 0xa0;
<br>
signed char c2 = 0xb0;
<br>
int16_t a = (c1 << 8) | c2;
<br>
<br>
printf("%x\n", (unsigned int)a);
<br>
}
<br>
<br>
<br>
./a.out
<br>
ffffffb0
<br>
<br>
L.
<br>
<br>
_______________________________________________
<br>
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<br>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<br>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
<br>
</blockquote>
</body>
</html>