![]() |
|
||||||||||
|
|||||
|
у меня есть 32-байтовая строка ASCII символов, которой представляется подпись MD5. как можно ее перевести в бинарный вид, то есть в 16-байтовую строку ?
можно объединять попарно символы, переводить в десятичное число, и писать в новую строку символ с получившимся номером, но что тогда делать с символом с номером 0 ? он не отображается на печати - и к строке ничего не добавится. кто-нибудь сталкивался с подобным ? спасибо за внимание
__________________
мы все спешим за чудесами.. |
|
|||||
|
Ветеран форума
|
бред... тебе не кажется?
от начала и до конца... отреж половину будет тебе 16 символов... =) но у тебя обсолютное непонимание того что ты хочешь сделать... или ты очень хорошо это понимаешь, но забыл что-то упомянуть... =) |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
сервер, принимающий эту подпись, работает с бинарным ее видом.
насчет непонимания: я , видимо, плохо объяснил. вот есть 32 байта подписи "b4a67f2859647af3426a7900511bc477", я их разбиваю на пары "b4 a6 7f 28 59 64 7a f3 42 6a 79 00 51 1b c4 77". каждая пара - шестнадцатеричное число (0xb4, 0xa6 и т.д.). но в таком виде каждое такое число занимает 2 байта (2 символа). мне нужно, чтобы оно весило 1 байт - я перевожу его в десятичное число (parseInt ("b4", 16)) и приписываю новой строке символ с таким кодом (String.fromCharCode(parseInt ("b4", 16))). теперь это число занимает всего 1 байт (1символ). Таким образом, я представил строку, изначально занимавшую 32 байта строкой, занимающей 16 байт. теперь проблема: символ, соответствующий коду 0 - непечатаемый, то есть при его добавлении к строке она не изменяется, соответственно когда сервер примет полученную строку, он не увидит на нужном месте нулевой байт.
__________________
мы все спешим за чудесами.. |
|
|||||
|
собственно вот
__________________
мы все спешим за чудесами.. |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Используй промежуточный скрипт на языке, который использует не ASCIIZ строки, а строки со счетчиком. Тот же PHP, к примеру.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
Преобразуй значения в строковую форму и сшивай их, тогда, по идее, нулевой байт не теряется.
|
![]() |
Часовой пояс GMT +4, время: 14:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|