C++实现string输出char的二进制 && 二进制string按位转char类型
string按二进制位转char类型
示例代码:
#include <string>
#include <iostream>
using namespace std;
/* 8 Bytes 以0/1为内容的字符串按二进制转化成 1 Byte 的 char */
int bin_to_dec_once(string bin_str) {
int ch = 0;
if (bin_str.length() != 8) {
cout << bin_str << " 不满足8bits!不可编码!" << endl;
exit(-1);
}
for (int i = 0; i < 8; i++) {
ch += (bin_str[i] - '0') << (7 - i);
}
return ch;
}
int main(){
string bin1 = "11111111";
string bin2 = "00000110";
char c1 = bin_to_dec_once(bin1);
char c2 = bin_to_dec_once(bin2);
cout << (int)c1 <<endl; /* 输出 -1 */
cout << (int)((unsigned char)c1 )<<endl; /* 输出 255 */
cout << (int)c2 <<endl; /* 输出 6*/
}
string输出char的二进制
示例代码:
#include <string>
#include <iostream>
#include <string.h>
using namespace std;
/* 十进制转二进制 */
string dec_to_bin(int c){
if(c < 2) return string(1,c + '0'); /* 出口 */
return dec_to_bin(c/2) + string(1, c%2 + '0'); /* 递归,短除法思路 */
}
/* 按char的8bits补齐前缀0 */
string bin_complete(string bin_code){
return string(8 - bin_code.length() , '0') + bin_code;
}
/* 将一个char转化为二进制的string */
string char_to_bin(char c){
unsigned char u_c = c;
return bin_complete(dec_to_bin(u_c));
}
int main(){
cout << char_to_bin('x') <<endl; /* 输出为: 01111000 */
cout << char_to_bin(255) <<endl; /* 输出为: 11111111 */
return 0;
}