![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Доброго времени суток!
Пишу простенький клиент-сервер на основе сокетов. Сообщения кодирую в бинарный код(1 и 0). Написал для этого процедуру: Код:
Попробовал перевернуть функцию т.к. ничего более в голову не пришло: Код:
ОБНОВЛЕНО Вопрос отвалился, придумал решение. Написал декодер: Код:
01000110 => F А вот толпу текста перводит, но не так как нужно. С русским алфовитом ни кодер, ни декодер не рулит, в чем соль? Последний раз редактировалось Человек_Борща; 23.06.2012 в 16:25. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
А по сколько символов Вы отводите на 1 байт?
В декодере, вроде, по 7 (цикл от 1 до 7). |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
1 символ = 1 Байту = 8 битам.
Строку вроде как с 1 начинают отсчитывать т.к. s[0] выводит весь массив(строка полностью). Если с 0 и до 7, то не то возвращает, если от 1 и до 8, то тоже не то. Длинну проверял. H => 01 00 10 00 = 4 битам или 8 символам в рез-те. Hello(5 знаков) => 01 00 10 00 01 10 01 01 01 10 11 00 01 10 11 00 01 10 11 11 = 20 битам или 40 знакам в рез-те. А вот из этих 40 бит, выводит это: Hdlln, а должно Hello. Как быть с русским алфавитом, вообще труба. Последний раз редактировалось Человек_Борща; 23.06.2012 в 21:27. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А что за блажь в битовое представление? В hex будет в четыре раза короче. А в BASE64 еще короче. И все таки битов 8, а не 7
![]()
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Код:
Цитата:
Код:
01000110 => Њ Нет, уже и с одной буквой не работает. |
||
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Еще раз обращаю Ваше внимание, что в декодере используется цикл от 1 до 7.
Цитата:
Хотя, что такое "20 битам или 40 знакам", я не понимаю. Цитата:
PS. По поводу того, что Вы с самого начала делаете что-то не то (т.е. увеличиваете для передачи объем данных в 8 раз), вполне согласен с Аватаром. |
||
![]() |
![]() |
![]() |
#7 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
В слове Hello 20 раз по 2. Код:
Цитата:
Проверил! Декодер работает нормально, ну или мне так кажется. лат. символ e => 01100101 01100101 => d Проблему решил сдвигом iChar вправо на 1 бит, после выполнения цикла, и передачей символа в строку. Цикл от 1 до 8. Последний раз редактировалось Человек_Борща; 23.06.2012 в 22:48. |
||
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Аватар, хм а я iChar shr 1 после цикла вставил и тоже работает.
В чем фокус? Вроде от перемены мест сумма не меняется... Update Дошло. Последний раз редактировалось Человек_Борща; 23.06.2012 в 22:52. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
что-то накидал на скорую руку:
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перевод в ASCII код и в двоичный код | Randy.Mandy | Microsoft Office Excel | 0 | 27.02.2012 21:40 |
двоичный код | vereney | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 30.03.2011 19:42 |
двоичный код | Иван 666 | Помощь студентам | 9 | 15.07.2010 08:52 |
двоичный код | Артэс | Общие вопросы C/C++ | 2 | 20.05.2010 19:15 |
Двоичный код | masterx13 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 14.11.2007 20:08 |