写了一个进制转换的代码,用来处理16进制字符 转 2进制字符串,如:输入‘a’ 输出1010; 输入'0' 输出0000;代码如下:
void char2bin(char _char,char* bin) { char str[5]={0}; int val=0; strcpy(bin,""); if(_char>='0' && _char<='9')val = _char - '0'; else if(_char>='A' && _char<='F')val = _char-'A'+10; else if(_char>='a' && _char<='f')val = _char-'a'+10; else return; for(int n=0;n<4;n++){ sprintf(str,"%s%d",str,((val>>(3-n))&0x1)); } strcpy(bin,str); }
测试代码如下:
#include "stdafx.h" #includeusing namespace std; #pragma warning(disable:4996) void char2bin(char _char,char* bin) { char str[10]={0}; int val=0; strcpy(bin,""); if(_char>='0' && _char<='9')val = _char - '0'; else if(_char>='A' && _char<='F')val = _char-'A'+10; else if(_char>='a' && _char<='f')val = _char-'a'+10; else return; for(int n=0;n<4;n++){ sprintf(str,"%s%d",str,((val>>(3-n))&0x1)); } strcpy(bin,str); } int _tmain(int argc, _TCHAR* argv[]) { char input[10] = {0}; char bin[5]; string str; do{ cout<<"请输入16进制数字:"; gets(input); str.clear(); for(int n=0 ;n<(int)strlen(input);n++){ char2bin(input[n],bin); if(strlen(bin)==0)continue; str +=bin; str +=" "; } cout< 测试:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)