c++ 如何将string类型的二进制转换为16进制?

比如现在有stringtest="10001111";帮忙写一个函数,传入string类型的10001111并返回一个string类型的16进制数万分感谢!!!... 比如现在有 string test = "10001111";
帮忙写一个函数, 传入 string 类型的 10001111 并返回 一个 string类型的 16进制数
万分感谢!!!
展开
 我来答
zhccsd
推荐于2016-10-05 · TA获得超过4042个赞
知道大有可为答主
回答量:1347
采纳率:66%
帮助的人:921万
展开全部
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
char set[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
string fun(string s)
{
if(s.length()==0) return "";
while((s.length() % 4)!=0) s+="0";
string r;
int step=0;
int sum=0;
for(int i=0;i<=s.length();)
{

if(step==4)
{
r+=set[sum];
step=0;
sum=0;
if(i==s.length()) return r;
}
else
{
sum+=(s.at(i)-48)*pow(2,4-step-1);
++step;
++i;
}
}
return "";
}
void main()
{
string s;
s="100010101000";
cout<<s<<endl;
cout<<fun(s)<<endl;
}
熊熊朋51
2013-11-28 · TA获得超过1139个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:218万
展开全部
用影射。
二进制每四位代表一个十六进制。
如0000=0 1111=F
代码的话。
就给个简单的吧。
string test;

cin>>test;
int len=test.length();
len=len%4;
while(len<4)
{
test="0"+test;
len++;
}
char a[]={'0','1','2',……‘F’};//这里我省略了.
len=test.length();
int sum=0;
for(int i=0;i<len;i++)
{
sum+=test[i]-‘0’;
if(i&&i%4==0){cout<<a[sum];sum=0;}
}
cout<<endl;
//没编译过,你自己试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hongtanqi
2015-08-24 · TA获得超过294个赞
知道小有建树答主
回答量:159
采纳率:100%
帮助的人:71.1万
展开全部
直接判断字符串中的数字是0还是1,如果是1则加1 ,是0则不加;在判断下一个数字之前先将当前值左移一位(即实现乘2);循环8次即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b5384d1
2013-11-28
知道答主
回答量:81
采纳率:0%
帮助的人:16.8万
展开全部
int i;
sscanf(test, &i);

printf("%x",i);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式