字节串到十六进制字符串

时间:2013-12-28 12:55:33

标签: c++ string hex

我有一个包含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;
}

请告诉我它有什么问题或帮我解决这个问题。

2 个答案:

答案 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。