![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод файла в троичной системе в аски и обратно.
bot77 © (2009-06-11 16:33:00)Собственно сабж. Дается файл в троичной системе счисления (состоящий из 0,1 и 2). Нужно перевести его в аски. И еще нужно функцию обратного перевода из аски в троичную.
Не нашел ни одной ф-ции перевода типа hextobin, как вообще называется троичная система?
Потом я так понял рассматривать нужно группы по 5 байт, но проблема в том что длина файла не обязательно кратна 5ти. В конце может остаться 2 байта например. Тогда я думаю можно в самом конце поставить контрольный символ из набора 256-3*3*3*3*3 и чтобы они означали длину последнего элемента. С алгоритмом вроде разобрался, а вот накодить нифига не получается, все время вылетает на обработке последних элементов, причем без разницы стринг я обрабатываю или беру из фала. Да и перевод из троичной системы в десятиричную сделал, а обратно фиг знает как. Может кто знает имя стандартной ф-ции конверсии? И подскажет как грамотно обработать звост если размер файла мод 5 больше нуля.
bot77 (2009-06-11 17:02:00) [21]тоесть елси следовать дальше по логике
0 -> 0
1 -> 1
2 -> 10
3 -> 11
4 -> 100
5 -> 101
6 -> 110
7 -> 111
8 -> 1000
9 -> 1001
и тогда число 107 например должно быть 10111, но это не так. Можете обьяснить ваш подход?
bot77 (2009-06-11 16:52:00) [22]Чтото я плохо вас понял.
одним аски символом я могу выразить 256 вариантов = 2*2*2*2*2*2*2*2
и 243 троичных варианта = 3*3*3*3*3
Скажем есть файл 20120102012010200101, тогда разбив на группы по 5
20120 10201 20102 00101, и делаю следующее
для 20120 = 2*81+1*9+2*3 = 177, вот я в результат и пишу chr(177).
ваш вариант мне показался очень интересным, но я его не понял, что на самом деле достаточно заменит все 2 на 10?
Ega23 (2009-06-11 16:40:00) [23]Троичная запись -> Двоичная запись
0 -> 0
1 -> 1
2 -> 10
Соответственно, файл вида 20120102012010200101 будет выглядеть
1001100101001100101000101
Ну и, естественно, файл должен быть текстовым.
Ega23 (2009-06-11 16:37:00) [24]
> Потом я так понял рассматривать нужно группы по 5 байт,
С чего ты взял?