ページ 11

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

Posted: 2015年9月13日(日) 22:38
by ぷすま
件名通りの質問ですが、4バイトのデータを2バイトにしてファイル書き込みを行いたいと思っています。
上記はどのようにすればいいでしょうか。サンプル等あると助かります。

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

Posted: 2015年9月13日(日) 22:50
by box
4バイトのデータを2バイトに変換した結果、場合によっては
変換の前後で値が変わってしまうことがあります。
それでもかまわないのでしょうか。

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

Posted: 2015年9月13日(日) 22:54
by みけCAT
言語がわかりませんが、とりあえず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;
}