我有一个包含968个二进制值0,1的字符串。我需要将其转换为包含每个8位字节组的十六进制值的字符串。 例如:'111111111000000110011001'转换为'ff8199'
这是我写的C ++代码:
#include<iostream>
#include<iomanip>
#include<math.h>
#include<string>
using namespace std;
void con(char* buf)
{
long int longint=0;
int len=8;
for(int i=0;i<len;i++)
longint+=(buf[len-i-1]-48) * pow(2,i);
cout<<setbase(16)<<longint;
}
int main()
{
string buf; cin>>buf; char temp[8];
for(int i=0; i<buf.size(); i+=7)
{
for(int k=i; k<i+8; k++)
temp[k-i]=buf[k];
con(temp);
}
return 0;
}
请告诉我它有什么问题或帮我解决这个问题。
答案 0 :(得分:1)
在外部for循环中,您必须将i
增加8,而不是增加7:
for(int i=0; i<buf.size(); i+=8)
答案 1 :(得分:0)
你的问题在这一行:
for(int i=0; i<buf.size(); i+=7)
7这里错了。当你一次跳8步时,它将是8而不是7。