|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.02.2011, 04:39 | #1 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
С# HexToStr
Здравствуйте!
Помогите разобраться с переписанием функции Delphi на C# Delphi: Код:
Delphi: Код:
Код:
Последний раз редактировалось ZBEP; 07.02.2011 в 04:43. |
07.02.2011, 15:29 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
StrToHex попробуйте такой код:
Код:
для отладки можете просто написать: Код:
Добавлено а вот и обратная функция: Код:
p.s. за код на шарпе просьба ногами сильно не пинать — ибо я писать пытаюсь, но плохо понимаю, что я собственно пишу, и почему это работает... Последний раз редактировалось Serge_Bliznykov; 07.02.2011 в 15:54. |
07.02.2011, 16:26 | #3 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Serge_Bliznykov, спасибо!
Работает с цифрами и англ. буквами/словами Если попробовать преобразовать рус текст Hex -> String, то вылетает ошибка и просит убедиться нет ли нигде деления на 0, может из-за того, что Рус. слова в Hex выглядят так: 420 443 441 П.с. Насчет процедур, то у меня привычка такая сначала ими все реализовывать, а потом если надо, то в функцию (хз зачем). Нашел, как преобразовывать StrToHex в нормальный вид, но код кривой какой-то: Код:
Например получается: StrToHex("й") = "3F" HexToStr("3F") = "?" Последний раз редактировалось ZBEP; 07.02.2011 в 18:18. |
08.02.2011, 23:01 | #4 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Чет я совсем запутался с этим Encoding XD
Как мне сделать так, что бы StrToHex делала из "Слово" -> "D1 EB EE E2 EE", а не "421 43B 43E 432 43E" или "D0 A1 D0 BB D0 BE D0 B2 D0 BE" ? Последний раз редактировалось ZBEP; 08.02.2011 в 23:15. |
08.02.2011, 23:53 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
но направление, куда двигаться - я Вам могу подсказать - Вам нужно предварительно перекодировать текст в однобайтовую кодировку ANSI (она же Windows-1251), она же System.Text.Encoding.GetEncoding(12 51) как конкрентно изменить кодировку символов в строке я не знаю. Завтра попытаюсь покопаться, если будет время (и задача не будет к этому времени решена, разумеется!) |
|
09.02.2011, 00:29 | #6 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Serge_Bliznykov, ок, большое спасибо за помощь!
Постараюсь сделать, в C# я вообще что-то туплю. |
09.02.2011, 09:42 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну вот, как и обещал, решение с перекодированием символов в кодовую таблицу 1251 (ANSI):
Код:
p.s. Боюсь, теперь у Вас будет следующий вопрос, как из HEX получить обратно строчку с русскими буквами... |
09.02.2011, 15:24 | #8 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Serge_Bliznykov, ох спсибо!
Насчет вопроса Вы правы.. Сейчас пытаюсь понять: Код:
Последний раз редактировалось ZBEP; 09.02.2011 в 15:27. |
10.02.2011, 00:15 | #9 |
Форумчанин
Регистрация: 23.03.2009
Сообщений: 334
|
Вот функция для перевода Hex в String учитывая Windows-1251.
Код:
Сам так и не смог додуматься, Mextrom, помог. Способ не такой вроде, но для меня в данный момент более понятен. Какой из них более рационален хз, главное что работает Правда полностью разобраться в них не помешало бы,но это уже позже. Последний раз редактировалось ZBEP; 10.02.2011 в 00:17. |
10.02.2011, 10:18 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ZBEP, поздравляю, рад, что проблема решена.
добавлю, Цитата:
Последний раз редактировалось Serge_Bliznykov; 10.02.2011 в 10:26. |
|