解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

バイナリファイルを出力する




こんにちは。
この記事を書いているときは仕事で急遽 C++ の出番になり、他の記事で VBA の高速化を考えてきたのにやっぱり、 C++ で書いていこうかなぁ…と思っている仕事の自動化にやりがいと達成感を感じるガッくんです。




この記事の目次




目的


今日は C++ です。バイナリでファイルを出力します。バイナリファイルを読み込むプログラムをササっと作った時に、テストデータが必要だったもので、作成したソースコードです。
このブログは別に VBS と VBA だけに特化して行くわけでは無く、色んなプログラム言語を使って自動化をして行くつもりなので、今回はその取っ掛かりとして C++ の記事を書きます。
載せる迄もないソースコードですが、忘れ防止の為にも掲載しておきます。




関数

バイナリ

面倒なのでざっくりと言って二進法です。
バイナリは二進法で出力されている電子データのことを指して使われていたりもします。

ソースコード
〜バイナリ出力〜

Visual Studio 2017 Community で C++ のコンソールアプリケーションのプロジェクトで作成しました。
その中のソースコードを丸ごと掲載します。

// BinaryWriter.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include 
#include 
#include 

using namespace std;

int main()
{
    ////////////////////////////////////////////////////////////////////////////////
    // バイナリ書き込み
    ////////////////////////////////////////////////////////////////////////////////
    
    // 書き込むためのファイルストリーム宣言
    ofstream fout;

    // 書き込むデータの用意
    char OutFilePath[] = "C:\\test1.bin";
    int num[] =  { 230, 1000, 31435, 543, 3, 365 };
    double d[] = { 63.85, 75.54864, 56.5456, 46.23 };
    char a[] = "abcdefghijklmnopqrstuvwxyz";

    // 書き込むデータの配列のサイズの取得
    int numLength = sizeof(num) / sizeof(num[0]);
    int dLength = sizeof(d) / sizeof(d[0]);
    int aLength = sizeof(a) / sizeof(a[0]);

    // ファイルを開く(もちろんファイルがなかったら新規作成します。)
    // ios::out ; 書き込み専用
    // ios::binary ; バイナリ出力
    fout.open(OutFilePath, ios::out | ios::binary);

    //  ファイルが開けなかったときの処理
    if (!fout) {
        cout << "バイナリを書き込むファイルが開けません\n";
        return 1;
    }

    // 書き込み
    // num[] の出力
    for (int i = 0; i < numLength; i++) {
        fout.write((char *)&num[i], sizeof(int));
    }

    // d[] の出力
    for (int i = 0; i < dLength; i++) {
        fout.write((char *)&d[i], sizeof(double));
    }

    // a[] の出力
    for (int i = 0; i < aLength; i++) {
        fout.write((char *)&a[i], sizeof(char));
    }

    // ファイルを閉じる
    fout.close();

    cout << "正常にバイナリファイルが作成されました。\n";
    return 0;
}




コメント

C ドライブ直下にバイナリファイルが出来るだけです。




以上