gpt4 book ai didi

c++ - 将二进制文件读入 Armadillo 矩阵的直接方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:44 25 4
gpt4 key购买 nike

这里是xxd test.bin的结果

0000000: 0100 0200 0300 0400 0500 0600 0700 0800  ................
0000010: 0900 0a00 0200 0400 0600 0800 0a00 0c00 ................
0000020: 0e00 1000 1200 1400 0300 0600 0900 0c00 ................
0000030: 0f00 1200 1500 1800 1b00 1e00 ............

它只是一个 short int 序列,每个大小为 2 个字节。

我现在想的是创建一个 arma::Mat<short> ,然后读入文件,每次两个字节,将这两个字节通过位转换转换为short int,然后赋值给Mat。

这应该可以,但看起来很乏味,有没有更好的方法?

最佳答案

您可以将整个文件读入一个 short 数组。像这样的东西:

#define BUF_SIZE 12345;
short int buffer[BUF_SIZE];

FILE *fp= fopen("test.bin", "rb");
int nread= fread( (void *)buffer, 1, BUF_SIZE, fp );

因为我猜你正在使用 C++,你可以在读取之前确定文件大小并动态创建缓冲区。不过,您仍然需要单独转换小端/大端。

关于c++ - 将二进制文件读入 Armadillo 矩阵的直接方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22055583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com