32 lines
728 B
Prolog
32 lines
728 B
Prolog
:- use_module(library(charsio)).
|
|
:- use_module(library(lists)).
|
|
|
|
:- initialization(unit_test).
|
|
|
|
unit_test :-
|
|
chars_utf8bytes("a£\x2124\", Bs),
|
|
Bs = [97, 194, 163, 226, 132, 164],
|
|
chars_utf8bytes(Cs, Bs),
|
|
Cs = "a£\x2124\".
|
|
|
|
write_f :-
|
|
open('x.txt', write, Stream, [type(binary)]),
|
|
F = put_byte(Stream),
|
|
chars_utf8bytes("£\x2124\\x2764\\x1F496\\n", Bs),
|
|
maplist(F, Bs),
|
|
close(Stream).
|
|
|
|
get_bytes(Stream, Res) :- get_bytes(Stream, [], Res).
|
|
get_bytes(Stream, Acc, Res) :-
|
|
get_byte(Stream, B),
|
|
(B =:= -1 ->
|
|
reverse(Acc, Res)
|
|
; get_bytes(Stream, [B|Acc], Res)).
|
|
|
|
read_f :-
|
|
open('x.txt', read, Stream, [type(binary)]),
|
|
get_bytes(Stream, Bs),
|
|
chars_utf8bytes(Cs, Bs),
|
|
write(Cs),
|
|
close(Stream).
|