将二进制文件读入犰狳矩阵的直接方法?

存在

这是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            ............

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

我现在想到的是创建一个arma::Mat<short>,然后一次读取两个字节的文件,然后通过位切换将这两个字节转换为short int,然后将其分配给Mat。

这应该可行,但看起来很乏味,是否有更好的方法?

存在

在TonyWilk的提示下,我提出了以下建议:

#include <sys/stat.h>
#include <stdint.h>
#include <armadillo>

int main()
{
    struct stat statbuf;
    stat("bigmat.bin", &statbuf);
    uintmax_t fsize = (uintmax_t)statbuf.st_size;
    uintmax_t bsize = fsize / sizeof(short);
    short buffer[bsize];
    FILE *fp = fopen("bigmat.bin", "rb");
    fread((void*) buffer, 1, fsize, fp);
//    for(uintmax_t i=0; i<bsize; i++) {
//        printf("%hd \n", buffer[i]);
//    }

    arma::Mat<short> mymat(buffer, 10, 3, false);
    std::cout << mymat << std::endl;
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将二进制文件读入MIPS中的数组

来自分类Dev

将二进制文件读入MIPS中的数组

来自分类Dev

将二进制文件读入int数组C ++

来自分类Dev

如何将二进制文件读入数组

来自分类Dev

将二进制文件读入std :: vector <bool>

来自分类Dev

文件流将十六进制文件读入二进制缓冲区

来自分类Dev

.net:将二进制文件读入内存然后进行访问的有效方法

来自分类Dev

将二进制文件读入相同的文件后,Unsigned Char为(空)

来自分类Dev

将二进制文件读入相同的文件后,Unsigned Char为(空)

来自分类Dev

读入二进制文件并正确使用数据

来自分类Dev

在C ++中将二进制文件读入char数组

来自分类Dev

在Swift中,如何将现有的二进制文件读入数组?

来自分类Dev

Python:将二进制文件读入结构,然后解压缩

来自分类Dev

如何有效地将二进制文件读入向量C ++

来自分类Dev

Objective-C至C ++将二进制文件读入float的多维数组

来自分类Dev

Python:将二进制文件读入结构,然后解压缩

来自分类Dev

Cython 将二进制文件读入字符串并返回

来自分类Dev

将二进制文件读入无符号字符向量缓冲区

来自分类Dev

使用ifstream将二进制数据读入结构

来自分类Dev

将二进制数据读入std :: string C ++

来自分类Dev

使用ifstream将二进制数据读入结构

来自分类Dev

格式化二进制的double的2D矩阵以读入IDL的最基本方法是什么?

来自分类Dev

将 numpy 矩阵附加到没有 numpy 标头的二进制文件

来自分类Dev

swift - 直接编写二进制文件,如 Python

来自分类Dev

numpy将向量转换为二进制矩阵

来自分类Dev

将二进制矩阵转换为组

来自分类Dev

将单列拆分为几列二进制矩阵

来自分类Dev

将动态加载的二进制文件静态链接为二进制文件

来自分类Dev

将二进制文件读入std :: vector <uint16_t>而不是std :: vector <char>

Related 相关文章

  1. 1

    将二进制文件读入MIPS中的数组

  2. 2

    将二进制文件读入MIPS中的数组

  3. 3

    将二进制文件读入int数组C ++

  4. 4

    如何将二进制文件读入数组

  5. 5

    将二进制文件读入std :: vector <bool>

  6. 6

    文件流将十六进制文件读入二进制缓冲区

  7. 7

    .net:将二进制文件读入内存然后进行访问的有效方法

  8. 8

    将二进制文件读入相同的文件后,Unsigned Char为(空)

  9. 9

    将二进制文件读入相同的文件后,Unsigned Char为(空)

  10. 10

    读入二进制文件并正确使用数据

  11. 11

    在C ++中将二进制文件读入char数组

  12. 12

    在Swift中,如何将现有的二进制文件读入数组?

  13. 13

    Python:将二进制文件读入结构,然后解压缩

  14. 14

    如何有效地将二进制文件读入向量C ++

  15. 15

    Objective-C至C ++将二进制文件读入float的多维数组

  16. 16

    Python:将二进制文件读入结构,然后解压缩

  17. 17

    Cython 将二进制文件读入字符串并返回

  18. 18

    将二进制文件读入无符号字符向量缓冲区

  19. 19

    使用ifstream将二进制数据读入结构

  20. 20

    将二进制数据读入std :: string C ++

  21. 21

    使用ifstream将二进制数据读入结构

  22. 22

    格式化二进制的double的2D矩阵以读入IDL的最基本方法是什么?

  23. 23

    将 numpy 矩阵附加到没有 numpy 标头的二进制文件

  24. 24

    swift - 直接编写二进制文件,如 Python

  25. 25

    numpy将向量转换为二进制矩阵

  26. 26

    将二进制矩阵转换为组

  27. 27

    将单列拆分为几列二进制矩阵

  28. 28

    将动态加载的二进制文件静态链接为二进制文件

  29. 29

    将二进制文件读入std :: vector <uint16_t>而不是std :: vector <char>

热门标签

归档