从 txt 文件初始化 uint8_t 数组
initialize uint8_t array from txt file
我在 .txt
文件中已经格式化了一个 uint8_t
数组,如下所示:
0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
我需要像这样从 C++ 初始化它:
static const uint8_t binary[] = { 0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, }
老实说,我对 C++ 有点陌生。
.txt 文件是将十六进制值存储为字节,还是存储为 4 个字符,用文字逗号和空格表示十六进制值?
如果您要存储实际的十六进制值,代码将变得非常简单
#include <fstream>
#include <vector>
// input file stream
std::ifstream is("MyFile.txt");
// iterators to start and end of file
std::istream_iterator<uint8_t> start(is), end;
// initialise vector with bytes from file using the iterators
std::vector<uint8_t> numbers(start, end);
如果我正确理解你的问题,你只需要在数组声明的地方包含你的文本文件:
static const uint8_t binary[] = {
#include "array.txt"
};
如果文本文件完全如您所示显示,并且您想在编译时初始化数组,则您可以简单地 #include
文件,例如:
static const uint8_t binary[] = {
#include "text.txt"
}
否则,您将不得不在运行时打开文本文件,例如使用 std::ifstream
,读取其上下文并从中解析字节值,然后动态分配和填充数组,例如通过使用 std::vector
.
我在 .txt
文件中已经格式化了一个 uint8_t
数组,如下所示:
0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
我需要像这样从 C++ 初始化它:
static const uint8_t binary[] = { 0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, }
老实说,我对 C++ 有点陌生。
.txt 文件是将十六进制值存储为字节,还是存储为 4 个字符,用文字逗号和空格表示十六进制值?
如果您要存储实际的十六进制值,代码将变得非常简单
#include <fstream>
#include <vector>
// input file stream
std::ifstream is("MyFile.txt");
// iterators to start and end of file
std::istream_iterator<uint8_t> start(is), end;
// initialise vector with bytes from file using the iterators
std::vector<uint8_t> numbers(start, end);
如果我正确理解你的问题,你只需要在数组声明的地方包含你的文本文件:
static const uint8_t binary[] = {
#include "array.txt"
};
如果文本文件完全如您所示显示,并且您想在编译时初始化数组,则您可以简单地 #include
文件,例如:
static const uint8_t binary[] = {
#include "text.txt"
}
否则,您将不得不在运行时打开文本文件,例如使用 std::ifstream
,读取其上下文并从中解析字节值,然后动态分配和填充数组,例如通过使用 std::vector
.