ofstream sw(fileName, ios::binary); if (!sw.is_open()) { cout << "fail to open " << fileName << endl; return -1; sw.write(name.c_str(), 255); sw.write(reinterpret_cast(&ni), sizeof(ni)); sw.write(reinterpret_cast(&nj), sizeof(nj)); for (int j = 0; j < nj; j++) { for (int i = 0; i < ni; i++) { sw.write(reinterpret_cast(&grid[j][i]), sizeof(grid[j][i])); sw.close(); return 0; template int Model2D::savetxt(string fileName) ofstream sw(fileName); if (!sw.is_open()) { cout << "fail to open " << fileName << endl; return -1; sw << "ni=" << ni << " nj=" << nj << endl; for (int j = 0; j < nj; j++) { for (int i = 0; i < ni; i++) { sw << grid[j][i] <<" "; sw << endl; sw.close(); return 0; template int Model2D::readbin(string fileName) ifstream fin(fileName, ios::binary); if (!fin.is_open()) { cout << "fail to open " << fileName << endl; return -1; char s[255]; fin.read(s, 255); this->name = s; cout << "name=" << this->name << endl; int n; fin.read(reinterpret_cast(&n), sizeof(n)); ni = n; fin.read(reinterpret_cast(&n), sizeof(n)); nj = n; cout << "ni=" << ni << " nj =" << nj << endl; T value; this->grid = vector>(nj, vector(ni, value)); for (int j = 0; j < nj; j++) { for (int i = 0; i < ni; i++) { fin.read(reinterpret_cast(&value), sizeof(value)); grid[j][i] = value; //cout << value << " "; //cout << endl; fin.close(); return 0;

2、测试容器的二进制读写情况

#include <random>
#include <algorithm>
#include "Model2D.h"
using namespace std;
int main()
    std::cout << "Hello World!\n";
    int ni = 10;
    int nj = 5;
    //Model2D<float> model2d = Model2D<float>(nj, ni, 1.0, "testName");
    auto model2d = Model2D<double>(nj, ni, 1, "testName");
    default_random_engine engin(0);
    uniform_real_distribution<double> urand(0,1);
    //uniform_int_distribution<int> urand(0, 10);
    for (int j = 0; j < nj; j++) {
        for (int i = 0; i < ni; i++) {
            model2d.grid[j][i] = urand(engin);
    model2d.savebin("model2d.dat");
    model2d.savetxt("model2d.txt");
    Model2D<double> model2dr;
    model2dr.readbin("model2d.dat");
    model2dr.savetxt("model2dr.txt");
    return 0;

3、测试结果

ni=10 nj=5
0.592845 0.844266 0.857946 0.847252 0.623564 0.384382 0.297535 0.056713 0.272656 0.477665 
0.812169 0.479977 0.392785 0.836079 0.337396 0.648172 0.368242 0.957155 0.140351 0.870087 
0.473608 0.800911 0.520477 0.67888 0.720633 0.58202 0.537373 0.758616 0.105908 0.4736 
0.186332 0.736918 0.21655 0.135218 0.324141 0.149675 0.222321 0.386489 0.902598 0.44995 
0.613063 0.902349 0.0992804 0.969809 0.65314 0.17091 0.358152 0.750686 0.607831 0.325047 

ni=10 nj=5
0.592845 0.844266 0.857946 0.847252 0.623564 0.384382 0.297535 0.056713 0.272656 0.477665 
0.812169 0.479977 0.392785 0.836079 0.337396 0.648172 0.368242 0.957155 0.140351 0.870087 
0.473608 0.800911 0.520477 0.67888 0.720633 0.58202 0.537373 0.758616 0.105908 0.4736 
0.186332 0.736918 0.21655 0.135218 0.324141 0.149675 0.222321 0.386489 0.902598 0.44995 
0.613063 0.902349 0.0992804 0.969809 0.65314 0.17091 0.358152 0.750686 0.607831 0.325047 
 

scipy.misc.imsave('outfile.jpg', image_array) 上面的scipy版本会标准所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为: import scipy.misc misc.to... 要求:1.分别从两个文件Matrix_A.txt以及Matrix_B.txt中取两个矩阵。            2.计算两个矩阵的相乘结果,并将乘积矩阵输出至Matrix_mul.txt中。            3.整个程序要求使用C++语言中的类操作实现。            4.包含安全性检查:文件找不到、文件为空、相乘的两矩阵维数不... 出指定文本文件中各矩阵,计算多矩阵相乘后结果,并将结果入另一文本文件中。 输入文件格式:1.每一个矩阵的列与列之间有一个空格,行与行之间有一个换行符。                          2.矩阵矩阵之间有一空行,文件末尾为最后一个矩阵的下一行。 一开始做这个练习的时候为result矩阵分配了所有输入矩阵中行列数最大值对应的内存空间。后来经老师提示发现需要为re   1.Kapok的特点   简单,易用,header-only,只需要引用Kapok.hpp即可;高效,初步测试性和messagepack相当。   它是纯c++11实现,因此需要支持C++11的编译器。   2.主要功能   对对象进行自动序列序列,用起来非常简单,先来看个序列/序列一个tuple的例子吧。   //序列   Serializer sr;   auto tp = std::make_tuple(10, 12, string("test"));   sr.Serialize(tp, "tuple");   //序列
之前了个opencv取大矩阵的问题,这次遇到一个更大的矩阵,不想用opencv格式文件,故直接采用c++取。 首先c++取文件的几种方式可以参考“探寻C++最快的取文件的方案”(1)一文,而其中提到的内存映射方法可以参考“windows笔记-内存映射文件”(2)一文。 输入对象是一个50×71028的浮点数矩阵,保存为.txt文件,共55mb,单纯采用fstream格式取需要
using System; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Binary; public class PurchaseCheck public const string pref
c++ 序列序列什么是序列?为什么要序列?优点在哪里?C++对象序列的四种方法Google Protocol Buffers(protobuf)Boost.SerializationMFC SerializationNet Framework简单总结举例说明 什么是序列序列指的是将一个内存对象转成一串字节数据(存储在一个字节数组中),可用于保存到本地文件或网络传输。序列...
//bool理论上使用一个bit就可以表示,但是实际还是使用1个字节,因为这是内存操作的最小单位 //这两个值可以是任意值,只要不相同即可,只是用于校验 const long true_pattern = 0xF00DF00D;