PSY
Можно заместо state=~state присваивать в case
state 0 или единицу.
Но думаю проблема в том что *asci.asci
Нужно через переменную сначало получить значение байта из памяти в неё а после с неё значение занести в память результата а не память -память работать?
Не работает код
Сообщений 31 страница 44 из 44
Поделиться3104.05.2024 22:21:24
Поделиться3205.05.2024 01:43:41
Как я понял, нужно первый байт оставлять на месте, второй записывать в конец буфера, третий на место второго, четвёртый на место предпоследнего и т.д.
Если я не ошибаюсь, то я бы сделал так:
For i=0 To InputFileSize-1 If Not i%2 PokeA (*OutputBuffer+i/2, PeekA (*InputBuffer+i)) Else PokeA (*OutputBuffer+InputFileSize-1-i/2, PeekA (*InputBuffer+i)) EndIf Next PokeA (*OutputBuffer+InputFileSize, i%2); последним дополнительным батом - чётное/не чётное число байт. Не понятно только, зачем это? Ну ладно, если автору топика это нужно...
Вместо этого участка кода:
*FirstPointer.Ascii = *InputBuffer *SecondPointer.Ascii = *InputBuffer + InputFileSize - SizeOf(Byte) *ResultPointer.Ascii = *OutputBuffer + SizeOf(Byte) Repeat Select State Case 0 *ResultPointer\a = *FirstPointer\a *FirstPointer + SizeOf(Byte) Case 1 *ResultPointer\a = *SecondPointer\a *SecondPointer - SizeOf(Byte) EndSelect If *FirstPointer = *SecondPointer *ResultPointer\a = *FirstPointer\a *OutputBuffer\a = State Break EndIf State = ~State ForEver
Ну вообще, по чесноку, я бы переписал по другому весь код от начала до конца, но это не важно.
Поделиться3305.05.2024 01:50:10
А вообще вопрос к топикстартеру - зачем это? Просто если для самосовершенствования, то понятно. Но если для кодирования с целью защиты информации (а навевает на эту мысль), то грош цена такого "кодирования". Особенно, если цель защиты обычный осмысленный текст. Раскодирует новичок в течение нескольких минут, на мой взгляд.
Поделиться3405.05.2024 09:30:16
А вообще вопрос к топикстартеру - зачем это? Просто если для самосовершенствования, то понятно. Но если для кодирования с целью защиты информации (а навевает на эту мысль), то грош цена такого "кодирования". Особенно, если цель защиты обычный осмысленный текст. Раскодирует новичок в течение нескольких минут, на мой взгляд.
Если первый байт 0 или 1 а именно это в цикле поиска то это одно если байт чётный не чётное число то нужна проверка на нулевой бит изначально далее он в зависимости от этого начинает читать с конца или начала байты к середине в новую память после чего последний прочитанный байт чётный нет типа записывает в файл первым (может последним,не вникал)потом остальное,а потом видимо раскодирует читая уже файл наоборот читая и занося результат к середине.
Поделиться3505.05.2024 11:52:27
Если первый байт 0 или 1 а именно это в цикле поиска то это одно если байт чётный не чётное число то нужна проверка на нулевой бит изначально далее он в зависимости от этого начинает читать с конца или начала байты к середине в новую память после чего последний прочитанный байт чётный нет типа записывает в файл первым (может последним,не вникал)потом остальное,а потом видимо раскодирует читая уже файл наоборот читая и занося результат к середине.
Всё как-то через чур усложнено. Зачем?
Я, может немного ошибся в алгоритме, т.к. не совсем понял задачу.
Если нужно ставить байты в порядке один с начала, следующий с конца и так далее, то тогда вот такой код:
For i=0 To InputFileSize-1 If Not i%2 PokeA (*OutputBuffer+i, PeekA (*InputBuffer+i/2)) Else PokeA (*OutputBuffer+i, PeekA (*InputBuffer+InputFileSize-1-i/2)) EndIf Next PokeA (*OutputBuffer+InputFileSize, i%2); последним дополнительным байтом - чётное/не чётное число байт.
Если бит чётности нужно записывать самым первым байтом, то совсем не сложно переделать.
Поделиться3605.05.2024 11:56:48
Мой код содержит 8 строк вместо 22 строк у автора топика.
Но я, кстати, могу избавиться от if-else, убрав ещё три строки и получится всего 5 строк. Только, боюсь, что могут возникнуть сложности с пониманием такого кода.
Поделиться3705.05.2024 16:27:54
Между краткостью и понятностью всегда следует выбирать понятность.
Поделиться3805.05.2024 19:36:05
А вообще вопрос к топикстартеру - зачем это?
Вы, наверное, остальные его темы не видели
Поделиться3905.05.2024 22:46:21
Между краткостью и понятностью всегда следует выбирать понятность.
Замабувараев, понятность - вещь всё-таки относительная. Одному что-то понятно, а другому то же самое тяжело для понимания.
Но да, по этому я не стал, например, выкладывать код без if-else. Потому что многие, скорее всего не поймут.
Но в с своих кодах, если они не предназначены для других глаз, я могу так делать, я-то это без проблем прочитаю.
Хотя, в принципе, ничего сложного обойтись без if-else в данном случае нет, просто логика.
Вы, наверное, остальные его темы не видели
Так и есть, не видел
Поделиться4005.05.2024 23:39:46
Как я понял, нужно первый байт оставлять на месте, второй записывать в конец буфера, третий на место второго, четвёртый на место предпоследнего и т.д.
Если использовать пример 123456, то у вас получается 135642
В логике автора поста результат должен быть таким: 162534
Поделиться4105.05.2024 23:58:04
грош цена такого "кодирования"
О качестве и цене кода, автор не задавал вопроса. Человек показал свой код и задал свой вопрос. По его коду, ему ответили, указав на ошибки. Обо всём остальном, в том числе об оптимизации, здесь речь не ведётся.
Отредактировано Webarion (06.05.2024 01:46:12)
Поделиться4206.05.2024 00:06:07
Но да, по этому я не стал, например, выкладывать код без if-else
Сударь, не лишайте себя такой возможности. Создайте отдельную соответствующую тематическую ветку и напишите там.
А здесь, об этом никто не спрашивал.
Отредактировано Webarion (06.05.2024 00:36:28)
Поделиться4306.05.2024 07:43:07
Если использовать пример 123456, то у вас получается 135642
В логике автора поста результат должен быть таким: 162534
Да, в первом моём примере так. Но дальше, в сообщении №35 я отметил, что сначала неверно понял алгоритм и там же выложил переделанный код.
О качестве и цене кода, автор не задавал вопроса. Человек показал свой код и задал свой вопрос. По его коду, ему ответили, указав на ошибки. Обо всём остальном, в том числе об оптимизации, здесь речь не ведётся.
Отредактировано Webarion (Вчера 23:46:12)
Есть какой-то запрет в правилах? Почему бы не предложить код проще? Может топикстартер примет к сведению. А не надо, так просто проигнорирует.
Поделиться4408.05.2024 03:23:34
Есть какой-то запрет в правилах? Почему бы не предложить код проще?
Код проще вы не предложили, но при этом, предпочли создать предпосылку для холивара!
Отредактировано Webarion (08.05.2024 03:58:13)