4バイトのデータを2バイトにしてファイル書き込みするには

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぷすま
記事: 2
登録日時: 11年前

4バイトのデータを2バイトにしてファイル書き込みするには

#1

投稿記事 by ぷすま » 10年前

件名通りの質問ですが、4バイトのデータを2バイトにしてファイル書き込みを行いたいと思っています。
上記はどのようにすればいいでしょうか。サンプル等あると助かります。

box
記事: 2002
登録日時: 14年前

Re: 4バイトのデータを2バイトにしてファイル書き込みするには

#2

投稿記事 by box » 10年前

4バイトのデータを2バイトに変換した結果、場合によっては
変換の前後で値が変わってしまうことがあります。
それでもかまわないのでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 4バイトのデータを2バイトにしてファイル書き込みするには

#3

投稿記事 by みけCAT » 10年前

言語がわかりませんが、とりあえずC言語で書いてみました。
fopen以外のエラーチェックは省略しています。

コード:

#include <stdio.h>

/* プログラマ向けに要素数を書いているが、コンパイラは無視する */
void convert(char out[2], const char in[4]) {
	/* 何らかの変換規則 */
	out[0] = in[0] | in[1];
	out[1] = in[2] | in[3];
}

int main(void) {
	const char *filename = "test.dat";
	char four_bytes_of_data[4] = {0xde, 0xad, 0xbe, 0xef};
	char data_to_write[2];
	FILE* fp;
	fp = fopen(filename, "wb");
	if (fp == NULL) {
		puts("failed");
	} else {
		convert(data_to_write, four_bytes_of_data);
		fwrite(data_to_write, sizeof(data_to_write), 1, fp);
		fclose(fp);
	}
	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る