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

C++ Zamiana tekstu na system dwójkowy

Object Storage Arubacloud
0 głosów
1,349 wizyt
pytanie zadane 18 maja 2016 w C i C++ przez Krzysztof Rak Bywalec (2,420 p.)

Cześć! Próbowałem zamienić w_char na system dziesiętny, a następnie na binarny. Chciałbym otrzymywać taki wynik jak na tej stronie:

http://binary.online-toolz.com/tools/text-binary-convertor.php

Miałem taki kod:

	wchar_t wchar = 'ą';
	int wcharToDec = (int)wchar;
	wstring stemp = utf8_to_utf16(to_string(wcharToDec));
	LPCWSTR lpcResult = stemp.c_str();

	MessageBox(NULL, lpcResult, (LPCWSTR)L"Site response", MB_ICONINFORMATION | MB_OK);

Zwracał on wartość 65465 co się nie zgadza z wartością, zwracaną przez konwerter online.

BTW. Czy znajdzie się lepszy sposób na wyświetlanie tekstu w MessageBoxie? :)

3 odpowiedzi

+1 głos
odpowiedź 19 maja 2016 przez maly Nałogowiec (37,190 p.)
wybrane 19 maja 2016 przez Krzysztof Rak
 
Najlepsza

Ten wynik binarny to tylko poszczególne bajty z tekstu zakodowanego w utf8, więc jeśli masz takst w wchar to musisz skonwertować go do utf8. Coś w ten deseń:

std::string wchar2utf8(const std::wstring &text)
{
	int size = WideCharToMultiByte(CP_UTF8, 0, text.c_str(), text.size(), NULL, 0, NULL, NULL);

	std::string utf8(size, ' ');
	WideCharToMultiByte(CP_UTF8, 0, text.c_str(), text.size(), &utf8[0], size, NULL, NULL);
	return utf8;
}

std::wstring wchar(L"ąęć");
std::string utf8 = wchar2utf8(wchar);

for(int i = 0;i < utf8.size(); ++i)
	std::cout << std::bitset<8>(utf8[i]) << " ";

 

+1 głos
odpowiedź 18 maja 2016 przez MetGang Nałogowiec (34,360 p.)
'ą' -> char
L'ą' -> wchar_t

Być może to jest przyczyną. Ogólnie wchar_t jest trochę zdradliwym typem, bo nieraz potrafi pomieścić 3 bajtowe znaki, a raz 2 bajtowe. Jego rozmiar jest dość nieokreślony.
komentarz 18 maja 2016 przez Krzysztof Rak Bywalec (2,420 p.)
Dzięki. Tak też próbowałem, zwraca 261.
0 głosów
odpowiedź 18 maja 2016 przez Krzysztof Rak Bywalec (2,420 p.)
Właściwie to chodzi mi o zamianę tekstu typu std::string na system dwójkowy.
komentarz 18 maja 2016 przez MetGang Nałogowiec (34,360 p.)
Właściwie możesz spróbować:

std::string Str = std::bitset<LICZBA_BITOW>("Tekst");
komentarz 19 maja 2016 przez Krzysztof Rak Bywalec (2,420 p.)
Również nie działa tak jak powinno. :(

std::string abc = bitset<16>('ą').to_string();

Podobne pytania

0 głosów
1 odpowiedź 738 wizyt
pytanie zadane 5 maja 2020 w C i C++ przez pseudoinformatyczka Nowicjusz (140 p.)
+1 głos
2 odpowiedzi 659 wizyt
pytanie zadane 2 sierpnia 2020 w C i C++ przez RufinB Obywatel (1,830 p.)
0 głosów
1 odpowiedź 830 wizyt
pytanie zadane 11 grudnia 2018 w JavaScript przez BluK Początkujący (410 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...