[c][c++] konwersja tekstu na typ binarny
Ostatnio zmodyfikowano 2018-01-22 14:05
aaadam Temat założony przez niniejszego użytkownika |
[c][c++] konwersja tekstu na typ binarny » 2018-01-22 10:26:48 witam, zastanawiam się czy są jakieś mechanizmy wbudowane w c lub c++, które pozwolą np. char text[]="jakis tekst" zamienic na tablicę bitów np. bool bText[] i na odwrót. Oczywiście mogę sam takie coś napisać ale po co. Pozdro |
|
geceves |
» 2018-01-22 12:04:18 Czy koniecznie potrzebna będzie funkcja? #include <string> #include <bitset> #include <iostream>
using namespace std;
int main() { string myString = "Hello World"; for( std::size_t i = 0; i < myString.size(); ++i ) { cout << bitset < 8 >( myString[ i ] ) << endl; cout << static_cast < char >( bitset < 8 >( myString[ i ] ).to_ulong() ) << endl; } }
01001000 H 01100101 e 01101100 l 01101100 l 01101111 o 00100000 01010111 W 01101111 o 01110010 r 01101100 l 01100100 d
|
|
mateczek |
» 2018-01-22 12:27:44 char text[]="jakis tekst" zamienic na tablicę bitów np. bool bText[] i na odwrót. |
Pytanie co chcesz osiągnąć. bo: #include <iostream> using namespace std; int main() { bool bl[ 5 ]; char chr[ 5 ]; cout << sizeof( bl ) << " " << sizeof( chr ) << endl; }
Jeśli chcesz wyświetlić każdy bajt tablicy w formie binarnej #include <iostream> using namespace std; int main() { string imie = "ala"; for( auto znak: imie ) { unsigned char maska = 0b10000000; for( int i = 0; i < 8; i++ ) { if( znak & maska ) cout << '1'; else cout << '0'; maska = maska >> 1; } cout << " "; } }
można wyświetlić tablicę podając kody ascii w kodzie szesnastkowym #include <iostream> using namespace std; int main() { string imie = "ala"; for( auto znak: imie ) { cout << hex <<( int ) znak; } }
c++ umożliwia takie struktury by bez obliczeń (jawnych) odwołać się do każdego bitu #include <iostream> using namespace std; struct literaBin { unsigned int bit8: 1, bit7: 1, bit6: 1, bit5: 1, bit4: 1, bit3: 1, bit2: 1, bit1: 1; };
int main() { string imie = "ala"; for( auto litera: imie ) { literaBin * temp =( literaBin * ) & litera; cout << temp->bit1 << temp->bit2 << temp->bit3 << temp->bit4 << temp->bit5 << temp->bit6 << temp->bit7 << temp->bit8 << " "; } }
To wszystko wyżej to nie były konwersje ale jedynie wyświettlenie informacji w inny sposób. można dokonać takie konwersji z wykorzystaniem bitset #include <iostream> #include<bitset> #include<vector> using namespace std;
int main() { string imie = "ala"; vector < bitset < 8 >> tablica; for( auto znak: imie ) { tablica.push_back( bitset < 8 >( znak ) ); } for( auto element: tablica ) cout << element << " "; }
Więc jak zamienić texst na tablice bitów?? wszystko zależy od preferencji i celu który chce się osiągnąć. (I podstawowe pytanie czy chce się zamieniać?? czy tylko wyświetlić oryginalny bit po bicie) |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2018-01-22 14:05:17 potrzebuję zamienić, wprost "jakis tekst" na tablicę boolowska obojętne czy "jakis tekst" będzie stringiem czy char * i obojętne czy tablica będzie bool [] czy vector<bool>. powyższe przykłady powinny wystarczyć,przerobię sobie, dzięki :) |
|
« 1 » |