• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem przy zapisywaniu hex do pliku.

Object Storage Arubacloud
0 głosów
206 wizyt
pytanie zadane 20 marca 2016 w C i C++ przez Yari27 Początkujący (410 p.)

Próbuję zakodować tekst w hexie ale przy zapisywaniu tego do pliku otrzymuję coś innego.
przykład:

Tekst: "NazwaCom"

Hex: "4E 61 7A 77 61 43 6F 6D"

Plik: 215ae04

podobnie się dzieje gdy próbuje np. rzutować (wchar_t)281 , w pliku otrzymuję 281 zamiast "ę".

Wpis zapisujący do pliku:

NowyPlik << AsciiToHex("NazwaCom").c_str() << endl;

Istnieje jakaś inna metoda by poprawnie zapisywało do pliku lub robię coś źle?

1 odpowiedź

+1 głos
odpowiedź 20 marca 2016 przez niezalogowany
ok, a funkcja "AsciiToHex" to jest jakaś gotowa funkcja, czy zrobiona przez ciebie?
komentarz 20 marca 2016 przez Yari27 Początkujący (410 p.)
Zrobiona przez mnie prosta funkcja,  która dokleja poszczególne cyfry kodu hex i zwraca już gotowy jako napis.
komentarz 20 marca 2016 przez niezalogowany
To zgaduję, że błąd leży tutaj, coś musiałeś zrobić źle w funkcji.
komentarz 20 marca 2016 przez Yari27 Początkujący (410 p.)

Ale jak zrobię sobie np. w ShowMessage to wyświetla się wszystko poprawnie

ShowMessage(AsciiToHex("NazwaCom").c_str());

 

komentarz 20 marca 2016 przez niezalogowany
Za mało kodu pokazałeś żeby można było ci coś poradzić, jak otwierasz plik oraz jak wygląda sam kod konwersji?
komentarz 20 marca 2016 przez Yari27 Początkujący (410 p.)
UnicodeString __fastcall TForm1::AsciiToHex(UnicodeString Slowo)
{
	UnicodeString result;
	for (int i = 1; i <= Slowo.Length(); i++)
	{
		result = result + IntToHex(Byte(Slowo[i]),2) + " ";
	}
	return result;
}

 

void __fastcall TForm1::Save()
{
	using namespace std;
	ofstream NowyPlik;
	NowyPlik.open("C:\\Users\\Yari\\Documents\\test\\Okienkowe\\zTest\\Win32\\Debug\\TestSave.ss");
	if (NowyPlik.is_open())
	{
		StaticText1->Caption = AsciiToHex("NazwaCom").c_str();//4E 61 7A 77 61 43 6F 6D
	    ShowMessage(AsciiToHex("NazwaCom").c_str());

		NowyPlik << AsciiToHex("NazwaCom").c_str() << endl;//237ae04
	}
	NowyPlik.close();
}

 

komentarz 20 marca 2016 przez niezalogowany
Ehh, builder...

Jedno jest pewne: winne jest kodowanie znaków, btw builder czasami nie ma własnej klasy do plików?
komentarz 20 marca 2016 przez Yari27 Początkujący (410 p.)
Teraz wszystko mi zapisuje jeśli nie jest bezpośrednio w cudzysłowiu do takiego formatu 20d980c.

Jak sobie poradzić z tym kodowaniem w builderze?
komentarz 20 marca 2016 przez niezalogowany
Nie mam pojęcia, nie przepadam za builderem
komentarz 21 marca 2016 przez Yari27 Początkujący (410 p.)
Funkcja AnsiToUtf8(); załatwia sprawę.
Dzięki za naprowadzenie.

Podobne pytania

0 głosów
1 odpowiedź 294 wizyt
pytanie zadane 22 lipca 2019 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 289 wizyt
pytanie zadane 20 marca 2018 w C i C++ przez program naczelny Gaduła (3,320 p.)
+2 głosów
3 odpowiedzi 115 wizyt
pytanie zadane 24 sierpnia 2023 w C# przez Mati336 Użytkownik (560 p.)

92,550 zapytań

141,394 odpowiedzi

319,522 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...