2011-12-14 188 views
1

我想要使用格式说明符“%.2X”将输入ascii字符串转换为十六进制格式。我在下面粘贴了相同的程序。但是,这个程序在Linux服务器中工作,它提供了不正确的十六进制输出扩展ASCII字符串转换为十六进制格式

#include <iostream> 
#include <cstring> 
#include <string> 
using namespace std; 

int main() 
{ 
char *buffer = "<9e>¥/gÿbbbbABCD"; 
char *newBuffer = new char[strlen(buffer)*2 + 1]; 
for(int i = 0; i< strlen(buffer); ++i) 
{ 
    sprintf(newBuffer+(2*i), "%02x", buffer[i]); 
    //cout<<"\t"<<newBuffer; 
} 
    cout<<"\t"<<newBuffer; 
    return 0; 
} 

O/P:3c39653effff2f67ffff6262626241424344 此扩展的ASCII字符¥和Y是给FFFF FFFF和。

请告诉我如何正确转换。

回答

0

如果我们unsigned char类型转换的源字符串,问题被解决:

sprintf(newBuffer+(2*i), "%02x", (unsigned char)buffer[i]); 
相关问题