字符串二进制转换

时间:2016-02-27 01:38:45

标签: c++ bitset

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

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

例如,如果我这样做:

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

我能够打印出我想要的所有二进制值。但我希望能够操纵这些价值观。在操作它之前,我是否必须转换为字符串,或者我可以直接操作这些位。

更具体地说,我希望将这些位分组为大小为6的组,并将这些组的值更改为int值。感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

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

这并不复杂。如果

unsigned char a, b, c;

然后是你的输入字节,(从内存中执行此操作):

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;

无需使用bitsets。你说你在写一个简单的程序吗?好吧,不能比这简单得多。这是你的四个整数。在最后一步中,使用数组查找将值转换为base64字母。

如果我在这里写错字 - 你会得到一般的想法。您可以查找并找出纸张和铅笔上的实际位移,并以相同的方式实现它们。