Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符串二进制转换_C++_Bitset - Fatal编程技术网

C++ 字符串二进制转换

C++ 字符串二进制转换,c++,bitset,C++,Bitset,我目前正在编写一个简单的程序,通过操纵字符串的位值将其转换为base64 如果我使用bitset函数将字符串转换为其位值,如何操作或存储这些值 例如,如果我这样做: std::cout << bitset<8>(cstring[i]) << std::endl; std::cout我建议您不要使用bitset,而是用老式的方式执行到base64的转换。将三个输入字节作为unsigned chars,并使用简单的按位移位和表查找将它们转换为base64 其实并

我目前正在编写一个简单的程序,通过操纵字符串的位值将其转换为base64

如果我使用bitset函数将字符串转换为其位值,如何操作或存储这些值

例如,如果我这样做:

std::cout << bitset<8>(cstring[i]) << std::endl;

std::cout我建议您不要使用
bitset
,而是用老式的方式执行到base64的转换。将三个输入字节作为
unsigned char
s,并使用简单的按位移位和表查找将它们转换为base64

其实并不复杂。如果

unsigned char a, b, c;
然后是您的输入字节(从内存执行此操作):

intb1=(a>>2);
int b2=((无符号字符)((a&0x03)>4);
int b3=((无符号字符)((b&0x0F)>6);
int b4=c&0x3F;
不需要使用位集。您说您正在编写一个简单的程序?嗯,再简单不过了。这是您的四个整数。在最后一步中,使用数组查找将值转换为base64字母表


如果我在这里输入了一个错别字,你就知道了大概的意思。你可以在纸和铅笔上查找并计算出实际的位移,然后用同样的方法实现它们。

是的,这是我第一次直接使用字节。我确实开始想也许我应该使用运算符来完成这项任务,但我想可能会有另一个好的,谢谢你的建议,我会继续努力的
int b1= (a >> 2);

int b2= ((unsigned char)((a & 0x03) << 4)) | (unsigned char)(b >> 4);

int b3= ((unsigned char)((b & 0x0F) << 2)) | (unsigned char)(c >> 6);

int b4= c & 0x3F;