
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
前の方の回答と似たようなものですが、
union shortbuff {
unsigned char cr[buffsize];
unsigned short st[bufsizeの半分];
} buff;
fread(buff.cr, 1, buffsize, fp);
以降 buff.st の配列を扱えばいいと思います。
No.4
- 回答日時:
共用体 union を使って[0],[1]ではなく、単に[1],[0]の順序で文字配列に fgetc(fp) などを用いて2バイト読み込むだけのこと。
位置変換の必要はありません。dat.string[1]=fgetc(fp);
dat.string[0]=fgetc(fp);
#include <stdio.h>
int main(void) {
union set1 {
char string[2];
unsigned short buff;
} dat;
printf("dat= ");
dat.string[1] = 0xc9;
dat.string[0] = 0x04;
printf("%X,", dat.buff);
dat.string[1] = 0x65;
dat.string[0] = 0x05;
printf("%X,", dat.buff);
dat.string[1] = 0x0b;
dat.string[0] = 0x06;
printf("%X,", dat.buff);
printf("...\n");
return 0;
}
No.3
- 回答日時:
理由は他の方が書いた通り。
上位バイトが先に並ぶバイト列を、CPU毎に上位下位が決まった順序に変換する関数があります。
#include <arpa/inet.h> /* Linux の場合 */
#include <winsock2.h> /* Windows の場合 */
short buf;
fread(buf,sizeof(short),1,fp);
buf = ntohs(buf); /* 他に htohl(long用), htons,htonl(逆変換) もあり */
No.2
- 回答日時:
little endianのコンピュータでは上位、下位のデータが読み込むと逆になります。
これはコンピュータの特性の為、プログラムで対応するしかありません。
一番簡単なのは、上下をヒックリ返す事だと思います。
buff = ((buff >> 8) & 0xff) | (buff << 8);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
ファイル操作で全角空白を消す
-
C言語で複数列のデータを1列の...
-
#defineが使用するメモリ領域に...
-
エラーについて質問です。
-
main.c:7:43: warning: implici...
-
「Aに対するBの割合」と「Aに対...
-
Aの値からBの値を除するとは??
-
有効数字について 以前質問をし...
-
プログラムでの数字につく”f”の...
-
「指定されたキャストは有効で...
-
20'(角度)の計算がわかりま...
-
複数桁10進数の*桁目だけを抽出...
-
信頼区間の1.96や1.65ってどこ...
-
C言語での引数の省略方法
-
do-while文が禁止される理由
-
エクセルで可視セルにのみ値貼...
-
値差の%計算方法について
-
2÷3などの余りについて
-
#if 1 #elseの意味について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
【C言語】全角文字の配列を、全...
-
#defineが使用するメモリ領域に...
-
エラーについて質問です。
-
printf による16進表示について
-
空白を含んだ文字列がうまく格...
-
プログラミングの授業の課題です
-
csvファイルの読み取り
-
Cプログラムについて
-
strtok
-
矢印キーを押下してコンソール...
-
C言語で複数列のデータを1列の...
-
ポインタと配列
-
構造体メンバの初期化
-
言語Cについて教えていただけま...
-
C++で指定文字列のカウント方法...
-
小数の指数表示
-
VC++でSQLへSELECT文を送ったの...
-
reallocでエラー
-
ファイル
おすすめ情報