Я сохранил следующий оператор данных, каждый элемент как строку, в программе C64. Я выбрал CHR $ (172) - CHR $ (190) и два выше CHR $ (4000).
100 data "©","ª","«","¬"," ","®","¯","¶","¼","½","¾","™","ח","⦁"
И я побежал следующий код:
10 FOR X=1 TO 14
20 READ A$
30 PRINT ASC(A$)
40 NEXT X
100 data "©","ª","«","¬"," ","®","¯","¶","¼","½","¾","™","ח","⦁"
Результаты были неоднозначными. Я знал, что ничего не будет признавать выше 255. Но CHR $ (173) печатается как 32 вместо:
RUN
169
170
171
172
32
174
175
182
188
189
190
?SYNTAX ERROR IN 100
READY.
Я сопротивлялся программу, и мое заявление DATA теперь выглядит следующим образом:
100 DATA "©","ª","«","¬"," ","®","¯","¶","¼","½","¾",""","",""
использования другого BASIC диалекта, еще один современный и написанный в течение последних нескольких лет, это был мой выход CHR $ за 172 до 190:
The ASCII value of A is: 65
The ASCII value of A should be 65, like it is on a PC.
If it is not 65, then a conversion table must be loaded
and the results converted to match the PC so code
CHR$ VALUES
—————————————————
CHR$(169)=© CHR$(170)=ª CHR$(171)=« CHR$(172)=¬ CHR$(173)=
CHR$(174)=® CHR$(175)=¯ CHR$(176)=° CHR$(177)=± CHR$(178)=²
CHR$(179)=³ CHR$(180)=´ CHR$(181)=µ CHR$(182)=¶ CHR$(183)=·
CHR$(184)=¸ CHR$(185)=¹ CHR$(186)=º CHR$(187)=» CHR$(188)=¼
CHR$(189)=½ CHR$(190)=¾
для C64 BASIC, вы должны либо использовать строку чисел, или ты должны будут использовать значения HEX и сохранять фактические символы, как это было в моем первоначальном заявлении C64 DATA.
Я не знаю точно, сколько места вы думаете, что собираетесь сохранить, но в лучшем случае оно будет минимальным, поскольку C64 не может пройти мимо CHR $ (255).
Однако на другом диалекте, который я использовал, SmartBASIC, я вышел из CHR $ (20480).
Надеюсь, это поможет.
Возможно, но вам нужно будет написать HEX-редактор, а в вашей строке изменить значения из 2 символов на их значение HEX, например пробел 20 в шестнадцатеричном формате и так далее. Это создаст вашу строку. Мне нужно было бы найти HEX-редактор на моем iPad, чтобы создать такую строку, а затем поместить запятую после каждой пары чисел. При некоторых тестах я мог бы получить ваш ответ, или кто-то, возможно, сможет быстрее создать оператор своей строки DATA. Тогда это может сделать READ A $ и A = CHR $ (VAL (A $)). Я набрал следующее: ГОТОВ. PRINT CHR $ (VAL («80»)), и он напечатал P. –
@GeorgeMcGinn. Вы предлагаете хранить данные как шестнадцатеричные вместо этого, используя два символа для каждого байта вместо одного? Я знаю, что могу это сделать, но он удваивает объем необходимого пространства. –
Не совсем. Каждый символ состоит из двух шестнадцатеричных битов (вместо байтов). Если вы посмотрите на шестнадцатеричное значение SPACE, оно равно x20. Проверьте мой ответ ниже, поскольку, когда я даже помещаю x169, он печатает ©, один символ. В приведенном ниже описании данных показано, что происходит, когда вы используете hex в инструкции DATA. C64 BASIC принимает только 255 значений. Итак, последние два в моем заявлении DATA находятся за 4000. Однако они все равно дали вам один байт. В противном случае, если вы не храните данные в шестнадцатеричном формате (который преобразует его в символ, который он представляет), вам лучше хранить строку чисел, так как нет другого способа сделать это. –