HEX char v řetezci – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

HEX char v řetezci – C / C++ – Fórum – Programujte.comHEX char v řetezci – C / C++ – Fórum – Programujte.com

 

TomyB
~ Anonymní uživatel
57 příspěvků
25. 10. 2018   #1
-
0
-

Ahoj, nedaří se mi zobrazit řetezec, ve kterém je hex char. Resp jen v případě, kdy proměnou naplňuji z textového souboru

příklad funkční, zobrazí se písmeno "č", tak jak požaduji

LPTSTR g_Text = L("\x10d");
pDC->DrawText(g_Text,....

příklad nefunkční, zobrazí se "\x10d", tedy nepřevede se na písmeno č

LPTSTR g_Text = section->args[i].szValue; je naplněn z txt souboru, textem "\x10d" (szValue je LPTSTR)
pDC->DrawText(g_Text,....
 

Věděl by někdo co s tím?

Díky

Nahlásit jako SPAM
IP: 62.245.115.–
gna
~ Anonymní uživatel
1891 příspěvků
25. 10. 2018   #2
-
0
-

Ta escape sekvence ve zdrojáku se při překladu vyhodnotí. Takže v tom stringu není lomítko-iks-jedna-nula-d, ale je tam č (respektive to co na daném systému má tuhle hodnotu, na to taky bacha).

Jestli ze souboru načítáš takovéhle sekvence, tak je pak musíš ještě interpretovat. Nevím, jestli je na to nějaká pěkná funkce, ale projít to po znacích není žadný problém.

Nahlásit jako SPAM
IP: 213.211.51.–
Panda380
Newbie
25. 10. 2018   #3
-
0
-

Interpretovat se to dá funkcí sprintf do bufferu.

Nahlásit jako SPAM
IP: 94.113.242.–
TomyB
~ Anonymní uživatel
57 příspěvků
26. 10. 2018   #4
-
0
-

#3 Panda38
Nahoď příklad. Zkouším jak můžu, výsledek je vždy ten co tam vkládám.

Níže třeba jeden z příkladů, kde si hex string převedu na dec a potom interpretuji ve sprintf, výsledek je pořád stejný "\x010d", níkoliv "č"

Dík

size_t size = wcstombs(NULL, g_Text, 0);
char* CharStr = new char[size + 1];
wcstombs( CharStr, g_Text, size + 1 );

unsigned long IntHex = strtoul(CharStr, 0, 16);

WCHAR output[6];
wsprintfW(output,L"\\x%04x",IntHex);

//output je "\x010d", nikoliv "č"
Nahlásit jako SPAM
IP: 62.245.115.–
gna
~ Anonymní uživatel
1891 příspěvků
26. 10. 2018   #5
-
0
-

   

WCHAR znak = (WCHAR) strtoul(CharStr, 0, 16);
Nahlásit jako SPAM
IP: 213.211.51.–
TomyB
~ Anonymní uživatel
57 příspěvků
26. 10. 2018   #6
-
0
-

#5 gna
Díky moc, funkční

Nahlásit jako SPAM
IP: 62.245.115.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

Podobná vlákna

Import HEX — založil some programmer

Převod elf -> hex — založil yaqwsx

HEX editace obrázků — založil Fredy.00

Převod hex do dec — založil cdx

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý