首页 > 解决方案 > C++ 将 HexString 转换为扩展的 Ascii 代码在文本文件中不显示正确的 ascii 代码

问题描述

如何将十六进制字符串转换为扩展的 ascii 代码符号代码并将转换后的代码写入文本文件。

示例输入字符串:

标准:字符串strInput =“FF2139FF”

示例输出字符串应为文本文件中的“ÿ!9ÿ”。

我尝试编写如下程序以写入文本文件。

#include <string>
using namespace std;

string ConvertHexStringToAsciiString(string sInputHexString, int step)
{
    int len = sInputHexString.length();
    string sOutputAsciiString;
    for (int i = 0; i < len; i += step)
    {
        string byte = sInputHexString.substr(i, step);
        char chr = (char)(int)strtol(byte.c_str(), nullptr, 16);
        sOutputAsciiString.push_back(chr);
    }
    return sOutputAsciiString;
}

void main()
{
    string sInputHexString = "FF2139FF";

    string sOutputAsciiString = "";
    sOutputAsciiString = ConvertHexStringToAsciiString(sInputHexString, 2);

    const char* sFileName = "E:\\MyProgramDev\\Convert_HexString_To_AsciiCode\\Convert_HexString_To_AsciiCode\\TestFolder\\1.txt";
    FILE* file = fopen(sFileName, "wt");
    if (nullptr != file)
    {
        fputs(sOutputAsciiString.c_str(), file);
        fclose(file);
    }
}

它似乎有效,但是当我用记事本打开文本文件 1.txt 时,我看不到 ÿ 并且只显示 !9 。我不确定如何使用记事本正确显示它或我的代码错误?

谢谢。

标签: c++text

解决方案


使用更好的记事本 - 甚至更好的任何 hexeditor 来查看结果。

尝试例如XVI 32 十六进制编辑器


推荐阅读