c++ 如何将string类型的二进制转换为16进制?
比如现在有stringtest="10001111";帮忙写一个函数,传入string类型的10001111并返回一个string类型的16进制数万分感谢!!!...
比如现在有 string test = "10001111";
帮忙写一个函数, 传入 string 类型的 10001111 并返回 一个 string类型的 16进制数
万分感谢!!! 展开
帮忙写一个函数, 传入 string 类型的 10001111 并返回 一个 string类型的 16进制数
万分感谢!!! 展开
4个回答
展开全部
#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;
}
#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;
}
展开全部
用影射。
二进制每四位代表一个十六进制。
如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;
//没编译过,你自己试下
二进制每四位代表一个十六进制。
如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;
//没编译过,你自己试下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接判断字符串中的数字是0还是1,如果是1则加1 ,是0则不加;在判断下一个数字之前先将当前值左移一位(即实现乘2);循环8次即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int i;
sscanf(test, &i);
printf("%x",i);
sscanf(test, &i);
printf("%x",i);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询