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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 如何将string类型的二进制转换为16进制?相关的知识,希望对你有一定的参考价值。

比如现在有 string test = "10001111";
帮忙写一个函数, 传入 string 类型的 10001111 并返回 一个 string类型的 16进制数
万分感谢!!!

#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;
参考技术A 用影射。
二进制每四位代表一个十六进制。
如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;
//没编译过,你自己试下
参考技术B 直接判断字符串中的数字是0还是1,如果是1则加1 ,是0则不加;在判断下一个数字之前先将当前值左移一位(即实现乘2);循环8次即可 参考技术C int i;
sscanf(test, &i);

printf("%x",i);

如何将string类型的数字转换成int

atoi和tcstoul、tcstol都可以把const
char*指向的字符串转换为数字。区别在于atoi将字符串当作一个“有符号十进制整数”来转换为int值,而tcstoul/tcstol则可以将十进制、二进制、八进制、十六进制等进制表示的数字字符串转换为unsigned
int或者int。
示例代码如下:
string
str
=
"123";
int
a
=
atoi(
str.c_str()
);//a为123
int
b
=
tcstol(
str.c_str(),
NULL,
10
);//b为123
或者
string
str
=
"A";//十六进制表示的数字。
int
a
=
tcstol(
str.c_str(),
NULL,
16
)//a为10
参考技术A 定义成string的数字,在进行数学计算时,需要int32.parse()
定义成int型的数字,在输出(向控件text等属性赋值)时,需要tostring()
看你业务和个人习惯怎么样了...
如果只是暂存或者作为get()-set()中转一下,不牵涉或少牵涉计算,可以用string.
如果需要进得多次计算,还是用数学型的吧.

以上是关于c++ 如何将string类型的二进制转换为16进制?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA:string类型转换int(16进制)

c++ 字符串转换16进制

c++中一个long类型数据转换成IP地址

将字符串转换成16进制

在页面js 中,怎么将中文字符串转换成2个字节长度16进制数;并在js 环境下解码16进

C++ string2进制转16进制要怎么做