c++ - 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 。我不确定如何使用记事本正确显示它或我的代码错误?
谢谢。
解决方案
使用更好的记事本 - 甚至更好的任何 hexeditor 来查看结果。
尝试例如XVI 32 十六进制编辑器
推荐阅读
- java - 使用静态变量打破递归
- sql - Oracle 中的动态透视
- python - 使用 SimpleHTTPServer 发送缓冲区而不是文件
- image - dart - 复制图像并保存在同一目录中
- c++ - 成员初始化器列表的使用如何防止在 C++ 中创建冗余对象?
- php - laravel 5.7 如何将一个控制器的变量 id 传递给另一个控制器
- postgresql - 如何将相关组保持在一起?
- ios - 更改选项卡控制器选项卡时的运行方法(iOS)
- .htaccess - htaccess 中的 ^([^.?]+)$ 和 ^(\w+)$ 重写规则说明
- c++ - 模拟概念和约束的推荐方法是什么?