C ++ преобразует HexString в расширенный код Ascii и не отображает правильный код ascii в текстовом файле - PullRequest
0 голосов
/ 21 октября 2019

Как преобразовать шестнадцатеричную строку в расширенный код символа кода ascii и записать преобразованные коды в текстовый файл.

Пример входной строки:

std: string 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. Я не уверен, как правильно отобразить его с помощью блокнота или мой код неверен?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Я нашел способ сделать что-то, разделить эту HexString FF на два байта (без знака) "F" и "F", а затем построить вместе и преобразовать в десятичную. Может показывать правильную букву.

0 голосов
/ 21 октября 2019

Используйте лучший блокнот - или, что еще лучше, любой гекседитор для просмотра результата.

Попробуйте, например, XVI 32 hex hex editor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...