ahoj.
Když udělám toto:
int i;
char* c = (char*)&i;
se převede číslo na bajty (např. 97 na "a").
Ale jak to udělat naopak? Abych z řetězce deserializoval číslo (nebo nějakou složitou třídu)?
Nemůžu na to přijít. Děkuju za odpovědi.
ahoj.
Když udělám toto:
int i;
char* c = (char*)&i;
se převede číslo na bajty (např. 97 na "a").
Ale jak to udělat naopak? Abych z řetězce deserializoval číslo (nebo nějakou složitou třídu)?
Nemůžu na to přijít. Děkuju za odpovědi.
hm ?
int x = (int&)*c;
To 97 je hodnota znaku 'a' v ASCII tabulce viz. http://www.asciitable.com/ Jinak opačně je to:
int znak = getch();
printf("%i", znak);
#1 hunter240
Ano, toto převede číslo na bajty. Ale nepočítal bych s tím, že je naprosto jisté, že se převede např. 97 na 'a'. Záleží totiž na tom, jak je číslo uloženo (endianita). Např. na SPARCu to vrátí znak číslo 0.
Pokud někomu připadá platforma SPARC příliš exotická, tak podobný problém může být např. i na ARMech. Každopádně předpoklady typu o tuto platformu se nemusím starat se mnohdy ukazují být chybné. Díky podobným předpokladům není Adobe pořád schopno vyprodukovat rozumně funkční flash pro 64-bitový linux. Nebo spousta programů nefunguje mezi různými verzemi Windows.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku