2016-05-21 3 views
1

Я хотел бы, чтобы проверить мой тестовый код,Как декодировать нулевой символ, ' 0', командой base64 в оболочке bash?

$ printf 'A\0B' | base64 

выход был

QQBC 

Чтобы проверить это, я декодирую кодированное значение выше по

$ printf 'A\0B' | base64 | base64 -d 
$ printf "\n" 

Тогда выход был

AB 

Отсутствует символ «\ 0».

Это правильное поведение или у меня есть решение сохранить нулевой символ?

спасибо.

+1

'\ 0' не хватает, 'printf 'A \ 0B' | base64 | base64 -d | wc -c' получит результат 3, как и ожидалось. – sigmalha

+1

'printf 'A \ 0B' | base64 | base64 -d | od -c' покажет правильный результат – sigmalha

+0

Спасибо, сигмала. Результат вашего пути в моей среде - 0000000 A \ 0 B. Ваш метод показывает оригинальный символ «\ 0», как и даже после декодирования. Легче подтвердить интуитивно достоверность кодирования/декодирования. – mora

ответ

2

Нулевой символ, '\ 0', отсутствует.

Это есть, но невидимо. (\0 - это всего лишь механизм ввода, это не то, что на самом деле выглядит нулевым символом).

Для подтверждения этого вы можете передать вывод этой команды в less, который имеет специальный способ отображения управляющих символов.

+0

Спасибо, Руах. Я попробовал ваше решение, и это привело к A^@ B. – mora

Смежные вопросы