扩展 ASCII 字符串转换为 Hex 格式
我正在尝试使用格式说明符 "%.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;
}
输出:3c39653effff2f67ffff6262626241424344 对于此扩展 ASCII 字符 ¥ 和 ÿ 给出 ffff 和 ffff。
请告诉我如何正确转换。
I am trying to convert the input ascii string to hex format using the format specifier "%.2X" . I have pasted the program at below which does the same. But, this program works in Linux server its giving improper hex output.
#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
for this extended ASCII char ¥ and ÿ is giving ffff and ffff.
Please tell me how to convert properly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果我们使用
unsigned char
对源字符串进行类型转换,问题就得到解决:If we typecast the source string with
unsigned char
, the problem gets solved: