Saik (Normal User)
Pro
Messaggi: 117
Iscritto: 07/08/2011
|
Ciao ragazzi come posso manipolare i bit di un file? avevo pensato di raggrupparli in 8 bit(formando quindi un byte) e poi flushare il contenuto nel file con
Codice sorgente - presumibilmente Plain Text |
fstream file("file.txt",ios::out);
file.write(byte,1);
|
ma nn riesco a raggruppare i bit perchè nn li riesco a manipolare direttamente....
Come potrei risolvere?
|
|
Qwertj (Dev Team)
Guru
Messaggi: 678
Iscritto: 30/05/2011
|
puoi usare gli operatori di bitwise che operano direttamente sui bit
Codice sorgente - presumibilmente C++ |
#define BIT_1 1 #define BIT_2 2 #define BIT_3 4 #define BIT_4 8 #define BIT_5 16 #define BIT_6 32 #define BIT_7 64 #define BIT_8 128 unsigned char byte = 0; //setta il primo e il secondo bit a 1 byte |= BIT_1; byte |= BIT_2
|
|
|
Saik (Normal User)
Pro
Messaggi: 117
Iscritto: 07/08/2011
|
Grazie mille ho buttato giu' questo:
Codice sorgente - presumibilmente C++ |
#include <bitset> using std::bitset; #include <fstream> using std::fstream; #include <iostream> void displayBits(unsigned value); #include <string> using std::string; using std::cout; int main() { fstream out("out.txt",std::ios::out); string st = "01010101"; const unsigned a = 1 << 8*sizeof(unsigned) - 1 ; unsigned result = 0 ; cout << "result :"; displayBits(result); cout << "a :"; displayBits(a); for(int i = st.size(); i > 0; i--) { if(st[i] == '1') { result ^= a; } result >>= 1; cout << i << " "; displayBits(result); } displayBits(result); std::cin >> result; return 0; } void displayBits(unsigned value) { const int SHIFT = 8*sizeof(unsigned) - 1; unsigned MASK = 1 << SHIFT; for(int i = 1; i <= SHIFT + 1;i++) { cout <<(value & MASK ? '1' : '0'); value <<= 1; } cout << std::endl; }
|
ovviamente è da migliorare
|
|
Qwertj (Dev Team)
Guru
Messaggi: 678
Iscritto: 30/05/2011
|
esistono!!!! i programmatori che si arrangiano esistono!!!
porti nuova fiducia nelle prossime generazioni Saik, grazie di cuore
|
|
Saik (Normal User)
Pro
Messaggi: 117
Iscritto: 07/08/2011
|
purtroppo ci stiamo estinguendo ma esistiamo ancora D
|
|