从TXT文件初始化uint8_t数组



我在.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); 

相关内容

  • 没有找到相关文章

最新更新