PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Не работает код


Не работает код

Сообщений 31 страница 37 из 37

31

Timon написал(а):

А вообще вопрос к топикстартеру - зачем это? Просто если для самосовершенствования, то понятно. Но если для кодирования с целью защиты информации (а навевает на эту мысль), то грош цена такого "кодирования". Особенно, если цель защиты обычный осмысленный текст. Раскодирует новичок в течение нескольких минут, на мой взгляд.

Если первый байт 0 или 1 а именно это в цикле поиска то это одно если байт чётный не чётное число то нужна проверка на нулевой бит изначально далее он в зависимости от этого начинает читать с конца или начала байты к середине в новую память после чего последний прочитанный байт чётный нет типа записывает в файл первым  (может последним,не вникал)потом остальное,а потом видимо раскодирует читая уже файл наоборот читая и занося результат к середине.

0

32

Sergeihik написал(а):

Если первый байт 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); последним дополнительным байтом - чётное/не чётное число байт.

Если бит чётности нужно записывать самым первым байтом, то совсем не сложно переделать.

0

33

Мой код содержит 8 строк вместо 22 строк у автора топика.
Но я, кстати, могу избавиться от if-else, убрав ещё три строки и получится всего 5 строк. Только, боюсь, что могут возникнуть сложности с пониманием такого кода.

0

34

Между краткостью и понятностью всегда следует выбирать понятность.

0

35

Timon написал(а):

А вообще вопрос к топикстартеру - зачем это?

Вы, наверное, остальные его темы не видели :D

0

36

Замабувараев написал(а):

Между краткостью и понятностью всегда следует выбирать понятность.

Замабувараев, понятность - вещь всё-таки относительная. Одному что-то понятно, а другому то же самое тяжело для понимания.
Но да, по этому я не стал, например, выкладывать код без if-else. Потому что многие, скорее всего не поймут.
Но в с своих кодах, если они не предназначены для других глаз, я могу так делать, я-то это без проблем прочитаю.
Хотя, в принципе, ничего сложного обойтись без if-else в данном случае нет, просто логика.

Smitis написал(а):

Вы, наверное, остальные его темы не видели

Так и есть, не видел   :dontknow:

0

37

Webarion написал(а):

Если использовать пример 123456, то у вас получается 135642
В логике автора поста результат должен быть таким: 162534

Да, в первом моём примере так. Но дальше, в сообщении №35 я отметил, что сначала неверно понял алгоритм и там же выложил переделанный код.

Webarion написал(а):

О качестве и цене кода, автор не задавал вопроса. Человек показал свой код и задал свой вопрос. По его коду, ему ответили, указав на ошибки. Обо всём остальном, в том числе об оптимизации, здесь речь не ведётся.

Отредактировано Webarion (Вчера 23:46:12)

Есть какой-то запрет в правилах? Почему бы не предложить код проще? Может топикстартер примет к сведению. А не надо, так просто проигнорирует.

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Не работает код