【发布时间】:2012-01-20 01:54:20
【问题描述】:
我正在尝试使用格式说明符 "%.2X" 将输入的 ascii 字符串转换为十六进制格式。我已经粘贴了下面的程序,它也是如此。但是,这个程序在 Linux 服务器上运行,它给出了不正确的十六进制输出。
#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 字符 ¥ 和 ÿ 给出 ffff 和 ffff。
请告诉我如何正确转换。
【问题讨论】: