Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure main()
- local f,o,r
- #вывод приглашения и инициализация строки-накопителя
- write("Enter a filepath:")
- r:=read()
- f:=""
- #открытие входного и выходного файла
- g:=open(r,"ru")
- t:=open(r||".uue","cw")
- #запись первой строки uue
- z:="begin 644 uue"||r[((*r)-3)+:4]
- write(t,z)
- #запускаем процедуру преобразования в uue
- #если строка f содержит 60 символов,то записываем
- #ее с символом М впереди
- #иначе записываем эту строку с другим символом,
- #отражающим ее размер
- while f:=f||(|rd(g)) do {
- if *f=60 then {
- write(t,"M"||f)
- f:=""
- }
- }
- if (*f~=0)&(*f<60) then {
- o:=(((*f)*6)/8)+32
- write(t,char(o)||f)
- }
- #запись конечной строки и символа защиты от повреждения
- write(t,"`\n","end")
- end
- #перевод в двоичную систему,8-битный формат
- procedure to_bin(x)
- local r,s,n
- n:=x
- s:=""
- while n>=1 do {
- r:=n%2
- s:=s||r
- n:=integer(n/2)
- }
- s:=reverse(s)
- while *s~=8 do {
- s:="0"||s
- }
- return string(s)
- end
- #перевод двоичного числа в десятичное
- procedure to_dec(d)
- local b,i,v
- b:=0
- v:=reverse(d)
- every i:=1 to *d do {
- b:=b+((2^(i-1))*v[i])
- }
- return b
- end
- #преобразование трех байт в четверку из 6 битов
- #и интерпретация их как символов ASCII
- procedure rd(g)
- local s,d,t,a1,a2,a3,a4,v
- d:=""
- v:=""
- while s:=reads(g,3) do {
- every t:=1 to *s do {
- d:=d||to_bin(ord(s[t]))
- }
- while *d~=24 do {
- d:=d||"0"
- }
- a1:=char(to_dec(d[1+:6])+32)
- a2:=char(to_dec(d[7+:6])+32)
- a3:=char(to_dec(d[13+:6])+32)
- a4:=char(to_dec(d[19+:6])+32)
- v:=a1||a2||a3||a4
- return v
- }
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement