Опитвам се да внедря следния C++ код в Ruby:
sprintf (tmp, "|%02x", Payload[i] & 0xFF);
По принцип всички байтове в данните за полезния товар, чиято стойност не е код от букви или цифри в кодовата таблица US-ASCII, се кодират като три байта:
| X1 X2
където '|' е байт със стойността на кода на символа '|' в кодовата таблица на US-ASCII (0x7C), 'X1' е първата шестнадесетична цифра от кода на байта, а 'X2' е втората шестнадесетична цифра от кода на байта.
Досега съм кодирал това:
payload.each_char do |char|
if char.match(/^[[:alnum:]]$/)
encoded_string << char && next
end
encoded_string << sprintf("|%02x", char.hex);
end
Проблемът е, че това не работи правилно за специални символи като '*' и други.
Всякакви идеи са много ценени.
*
? - person Esailija   schedule 18.12.2012char.hex
, тъй като типът знак може да съхранява само символи US-ASCII. - person Linuxios   schedule 18.12.2012