このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1342966104/937
#  [1] 授業単元:マルチメディア実習  
#  [2] 問題文(含コード&リンク):  
#   
#  1. 
#  0x01, 0x02, 0x03, ・・・, 0x09, 0x0a, 0x0b, 0x0c の12バイトの内容を持つバイナリファイルを”ex1.bin”というファイル名で作成するCプログラムを書け. 
#  2.ex1.bin の内容を1バイトずつ読み出して,画面にprintfするCプログラムを書け 
#  3.ex1.bin をファイル先頭から int が3つ順に記録されたバイナリファイルと見なして読み出し,その3つのintの値を画面にprintfするCプログラムを書け.なぜそのような整数値になったか説明せよ. 
#  

'ex1.bin の内容を1バイトずつ読み出して,画面に表示する' :-
        open('ex1.bin',read,Instream,[type(binary)]),
        'ex1.bin の内容を1バイトずつ読み出して,画面に表示する'(Instream),
        close(Instream),!.

'ex1.bin の内容を1バイトずつ読み出して,画面に表示する'(Instream) :-
        at_end_of_stream(Instream),
        write('\n'),!.
'ex1.bin の内容を1バイトずつ読み出して,画面に表示する'(Instream) :-
        '1バイトずつ読み出して,画面に表示する'(Instream),
        'ex1.binの内容を1バイトずつ読み出して,画面に表示する'(Instream).

'1バイトずつ読み出して,画面に表示する'(Instream) :-
        get_byte(Instream,Code),
        byte_16進数文字列(Code,_16進表示文字列),
        writef('%x',[_16進表文字列]).

byte_16進数文字列(N,_16進文字列) :-
        N_1 is N // 16,
        M is N mod 16,
        '0から15までの整数を1文字の16進数文字列に変換'(N_1,_16進文字列_1),
        '0から15までの整数を1文字の16進数文字列に変換'(M,_16進文字列_2),
        atom_concat(_16進文字列_1,_16進文字列_2,_16進文字列).

'0から15までの整数を1文字の16進数文字列に変換'(N,_16進文字列) :-
        N =< 9,
        atom_number(_16進文字列,N),!.
'0から15までの整数を1文字の16進数文字列に変換'(10,'a').
'0から15までの整数を1文字の16進数文字列に変換'(11,'b').
'0から15までの整数を1文字の16進数文字列に変換'(12,'c').
'0から15までの整数を1文字の16進数文字列に変換'(13,'d').
'0から15までの整数を1文字の16進数文字列に変換'(14,'e').
'0から15までの整数を1文字の16進数文字列に変換'(15,'f').