Практикум по среде и языку QBasic 157

ловку файла, а второе — к заголовку кодовой страницы. На экране также видно, что начиная со второй строки группы кодов разделены пробелами, притом во второй и третьей строках размещаются по 5 групп. Такая периодичность может соответствовать кодированию каждого символа 16 байтами (фонт размером 8Х16). Для проверки этой гипотезы вы можете попытаться расшифровать коды четвертой группы во второй строке, включающей в себя два треугольных символа, две цифры 8, две вертикальные черты и маленький квадрат. Последовательность шестнадцате-ричных кодов, соответствующих этим символам: 10, 38, 7С, FE, 7C, 38, 10. Напишите двоичные коды в 7 строках таким образом, чтобы соответст-вую1цие разряды находились на одной и той же вертикали, и вы увидите, что единички образуют растровое изображение бубновой карточной масти. А это как раз и есть символ с номером 4.

Поскольку команде TYPE не удается продвинуться дальше символа с кодом 26, для дальнейшего чтения составим программу вывода нескольких десятков кодов из самого начала файла:

CLS 'очистка экрана DIM byte AS STRING*! 'определение байта OPEN "C:\dos\ega3.cpi" FOR BINARY AS #1 'открытие файла FOR 1% = 1 ТО 257 'цикл чтения 257 байтов GET #1, 1%, b% 'чтение очередного байта PRINT USING "####"; ASC(byte); 'вывод кода IF 1% MOD 16 = 1 THEN PRINT

'переход на следующую строку NEXT 1% 'конец цикла CLOSE #1 'закрытие файла

В этой программе для чтения символов введена байтовая переменная, определяемая как строка единичной длины. Файл открыт как двоичный для того, чтобы обеспечить доступ к любому байту. Чтение символов осуществляется процедурой GET в цикле по счетчику. Формат вывода организован таким образом, чтобы можно было легко определить порядковый номер байта в файле по расположению его десятичного кода на экране. В воспроизведенном ниже примере вывода на экран коды явно текстовых частей информации заменены на буквы.

255

F

0

N

Т

32

32

32

0

0

0

0

0

0

0

0

1

0

1

23

о

0

0

5

0

28

0

77

38

0

0

1

0

Е

G

А

32

32

32

32

32

181

1

0

0

0

0

0

0

5

0

0

0

1

0

3

0

18

38

16

В

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

126

129

165

129

129

189

153

129

129

126

0

0

0

0

0

0

126

255

219

255

255

195

231

255

255

126

0

0

0

0

0

0

0

0

108

254

254

254

254

124

56

16

0

0

0

0

0

0

0

0

16

56

124

254

124

56

16

0

0

0

0

0

0

0

0

24

60

60

231

231

231

24

24

60

0

0

0

0

0

0

0

24

60

126

255

255

126

•24

24

60

0

0

0

0

0

0

0

0

0

0

24

60

60

24

0

0

0

0

0

0

255

255

255

255

255

255

231

195

195

231

255

255

255

255

255

255

0

0

0

0

0

60

102

66

66

102

60

0

0

0

0

0

255

255

255

255

255

195

153

189

189

153

195

255

255

255

255

255

0

0

30

14

26

50

120

204

204

204

204

120

0

0

0

0