Re: Jak to v C++ napsat líp?

Ladislav Vaiz spam na nagano.cz
Čtvrtek Srpen 31 09:11:19 CEST 2023


Ano, to je příklad toho, co se stane, když se na vstupu objeví "záporné" 
znaky. Ano, mohl jsem zvolit jiné hodnoty. Dejte si tam třeba 0x80 a 0x81.
L.

On 31.08.2023 9:08, Martin Záruba wrote:
>
> To není 0xa0 0xb0, ale znaky AB, tedy 0x41 0x42. To pole je 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
>
> client.write((byte*)A,počet_znaků);
>
> to pole je pochopitelně větší, než 2 znaky.
>
> Martin Záruba
> Dne 31.8.2023 v 8:31 Ladislav Vaiz napsal(a):
>> On 31.08.2023 8:05, Martin Záruba wrote:
>>> Mám pole
>>>
>>> int A[2];
>>>
>>> potřebuji do něj ale vložit  čtyři znaky ABCD. Vymyslel jsem
>>>
>>> A[0] = ('A' << 8) | 'B';
>>> A[1] = ('C' << 8) | 'D';
>>>
>>> nejde to nějak líp? Toto funguje, ale je to docela nesrozumitelné.
>>>
>> 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 :-)
>>
>> Doporučuji přetypovat na unsigned.
>>
>>
>>
>> #include <stdio.h>
>> #include <stdint.h>
>>
>> int main(){
>>     signed char c1 = 0xa0;
>>     signed char c2 = 0xb0;
>>     int16_t a = (c1 << 8) | c2;
>>
>>     printf("%x\n", (unsigned int)a);
>> }
>>
>>
>>  ./a.out
>> ffffffb0
>>
>> L.
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list