【问题标题】:Extended ASCII charatcer string convert into Hex format扩展的 ASCII 字符串转换为 Hex 格式
【发布时间】: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。

请告诉我如何正确转换。

【问题讨论】:

    标签: format char hex ascii


    【解决方案1】:

    如果我们用unsigned char 对源字符串进行类型转换,问题就解决了:

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

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 2013-04-01
      • 2013-03-19
      • 2016-01-07
      • 2015-12-07
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多