このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1263824755/362
#  ../test/read.cgi/tech/1263824755/361 
#  ≪問題と条件≫ 
#  第1引数に指定したファイルからバイナリーモードで1バイトずつファイルを読み込み、 
#  ファイルの内容を16進数で示したものを第2引数に指定したファイルに書き込むプログラムを作成せよ。ただし、16バイトごとに改行を入れること。 
#  (実行) 
#  >free1.exe test.txt test2.txt 
#   
#  でしょ? 
# 
# 

program :-
    user_parameters([FileIn,FileOut]),
    open(FileIn,read,Input,[type(binary)]),
    open(FileOut,write,Output),
    get_byte(Input,C),
    free1(0,Input,Output,C),
    close(Output),
    close(Input).

free1(_,_,_,-1) :- !.
free1(16,Input,Output,C) :-
    write(Output,'\n'),
    free1(0,Input,Output,C),!.
free1(M,Input,Output,C) :-
    N進数(16,C,A),
    write(Output,A),
    get_byte(Input,C2),
    M2 is M + 1,
    free1(M2,Input,Output,C2).

% N進数/3の定義は http://nojiriko.asia/prolog/j68_493.html 参照