bitset frage
-
und wie bringe ich ein char[1] in ein bitset<8> bzw. char[3] in ein bitset<24> ?
-
char b[]="1011"; char h[256]; long l=strtol(b,0,2); itoa(l,h,16);
-
char b[2] = 0x701; long tmp = strtol(b, 0, 2); bitset<16> bitseta(tmp); bitseta sollte dann "11100000001" enthalten!?? dann sag ich dann: bitseta.set(0, 0); dh ich mache 0x702 daraus, dann will ichs wieder ins b[2] kopieren! char getHexCharacter(std::string str) { if(str.compare("1111") == 0) return 'F'; else if(str.compare("1110") == 0) return 'E'; else if(str.compare("1101")== 0) return 'D'; else if(str.compare("1100")== 0) return 'C'; else if(str.compare("1011")== 0) return 'B'; else if(str.compare("1010")== 0) return 'A'; else if(str.compare("1001")== 0) return '9'; else if(str.compare("1000")== 0) return '8'; else if(str.compare("0111")== 0) return '7'; else if(str.compare("0110")== 0) return '6'; else if(str.compare("0101")== 0) return '5'; else if(str.compare("0100")== 0) return '4'; else if(str.compare("0011")== 0) return '3'; else if(str.compare("0010")== 0) return '2'; else if(str.compare("0001")== 0) return '1'; else if(str.compare("0000")== 0) return '0'; else if(str.compare("111")== 0) return '7'; else if(str.compare("110")== 0) return '6'; else if(str.compare("101")== 0) return '5'; else if(str.compare("100")== 0) return '4'; else if(str.compare("011")== 0) return '3'; else if(str.compare("010")== 0) return '2'; else if(str.compare("001")== 0) return '1'; else if(str.compare("000")== 0) return '0'; else if(str.compare("11")== 0) return '3'; else if(str.compare("10")== 0) return '2'; else if(str.compare("01")== 0) return '1'; else if(str.compare("00")== 0) return '0'; else if(str.compare("1")== 0) return '1'; else if(str.compare("0")== 0) return '0'; } b[0] = getHexCharacter(bitseta.to_string().sub_str(0, 8)); b[1] = getHexCharacter(bitseta.to_string().sub_str(8, 8));
-
bitset schrieb:
hallo,
wie kann man ein char test[1] oder char test mit einem bitset<8> initialisieren?
bitset hat ja die funktion to_string(); da komme ich einen std::string.bye
char test[1]; bitset<8> bits(static_cast<unsigned long>(test[0]));Was willst du eigentlich machen?
-
ich habe char arrays will aber std::bitset dafür verwenden...
-
Dann mach das doch.
-
sowas in der art:
void binary_str_to_char_array(std::string str_binary, char *array, unsigned int array_length) { for(unsigned int i = 0; i < array_lenth; i++) { *(array++) = getHexCharacter(str_binary.sub_str(i*8, 8)); } } std::bitset<hmm??> char_array_to_bit_set(char *array, unsigned int array_length) { bitset<array_length> bits(static_cast<unsigned long>(array[hmm??])); return bits; }
-
Äh, du willst also einen String voller 1 und 0 in ein bitset verwandeln mit Hilfe der beiden Methoden?
-
ja,
ich glaube boost::dynamic_bitset ist dafür geeignet:
unsigned char data[2] = {211,31}; boost::dynamic_bitset<unsigned char> bitbuf(data, &data[2]); unsigned char data2[2]; memset(&data2, 0, sizeof(data2)); data2 = bitbuf.get_allocator(); // funzt so nicht, wie geht das?
-
Zeig doch mal mehr Code. Ich habe immer noch keinen blassen Schimmer von dem was du überhaupt vor hast. Bisher würde ich sagen: Bullshit.