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