我在.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++有点陌生。
如果我正确理解了你的问题,你只需要在数组声明的地方包含你的文本文件:
static const uint8_t binary[] = {
#include "array.txt"
};
如果文本文件显示完全如您所示,并且您希望在编译时初始化数组,那么您可以简单地#include
文件,例如:
static const uint8_t binary[] = {
#include "text.txt"
}
否则,您将不得不在运行时打开文本文件,例如使用std::ifstream
,在其上下文中读取并解析其中的字节值,然后动态地分配和填充您的数组,例如使用std::vector
。
.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);