首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何将16进制文本转化成2进制数字

2012-04-24 
怎么将16进制文本转化成2进制数字?若我读到的内容是16进制:605914F05A5B267308CA0FF01D0DF120C321F588CA02

怎么将16进制文本转化成2进制数字?
若我读到的内容是16进制:605914F05A5B267308CA0FF01D0DF120C321F588CA0274F1B2B31EB508CA004C8C,
怎么转化成2进制数字?


[解决办法]

C/C++ code
#include<stdio.h>const char *HEX[16]= {"0000","0001","0010","0011",                      "0100","0101","0110","0111",                      "1000","1001","1010","0011",                      "0100","1101","1110","1111",                     };int main(){    const char *str="605914F05A5B267308CA0FF01D0DF120C321F588CA0274F1B2B31EB508CA004C8C";    int n=0;    const char *p=str;    while(*p)    {        sscanf(p,"%1X",&n);        puts(HEX[n]);        p++;    }    return 0;}
[解决办法]
探讨
引用:

C/C++ code

#include<stdio.h>
const char *HEX[16]= {"0000","0001","0010","0011",
"0100","0101","0110","0111",
"1000","1001","1010","0011",
……
可是怎样将转化的值赋给一个量呢?如,data=0110000001011……

[解决办法]
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string transferData(const string& data);
int main()
{
string filename;
cin >> filename; //输入问价路径
ifstream in(filename.c_str());

while(!in.eof(), in >> filename)
{

string data = filename;
string getdata = data.substr(4, 100);
string dddd = transferData(getdata);
cout << dddd;
}
return 0;
}

string transferData(const string& data)
{
string returndta = "";
for(int i = 0; i < data.length(); i++)
{
switch(data[i])
{
case '0':
returndta += "0000";
break;
case '1':
returndta += "0001";
break;
case '2':
returndta += "0010";
break;
case '3':
returndta += "0011";
break;
case '4':
returndta += "0100";
break;
case '5':
returndta += "0101";
break;
case '6':
returndta += "0110";
break;
case '7':
returndta += "0111";
break;
case '8':
returndta += "1000";
break;
case '9':
returndta += "1001";
break;
case 'A':
returndta += "1010";
break;
case 'B':
returndta += "1011";
break;
case 'C':
returndta += "1100";
break;
case 'D':
returndta += "1101";
break;
case 'E':
returndta += "1110";
break;
case 'F':
returndta += "1111";
break;
}
}
return returndta;
}

热点排行