Когда вы играете в код, иногда вам понадобится шестнадцатеричный дамп кода, обычно потому, что вы использовали непечатаемые символы. Итак, почему бы не сделать программу, которая сама Hex Dumps?
Соревнование
Эта задача состоит в том, чтобы без ввода вывести шестнадцатеричный дамп исходного кода в следующем формате:
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Или, например, если ваша программа была print("SomeString"):rep(123)
0000: 70 72 69 6e 74 28 5c 22 53 6f 6d 65 53 74 72 69 print("SomeStrin
0010: 6e 67 5c 22 29 3a 72 65 70 28 31 32 33 29 g"):rep(123)
конкретика
Шестнадцатеричный дамп разделен на строки из трех частей, каждая строка представляет 16 байтов вашего исходного кода.
Первая часть - это адрес памяти. Он указывает, где в вашем коде начинается текущая строка. Записывается как 2-байтовое шестнадцатеричное число, после которого :
следует пробел.
Второе - это сам шестнадцатеричный дамп. Это 16 байт вашего исходного кода, написанных в шестнадцатеричной форме, разделенных пробелами. Это должно быть точное представление байтов с использованием кодировки вашего кода.
Наконец, после двух пробелов, сам код. Это просто 16 символов вашего кода с непечатными символами, написанными как.
Примечания
- Это является Куайн задачей, поэтому стандартные Куайн правила применяются.
- И это тоже вызов для игры в гольф , поэтому применяются стандартные лазейки .
- Как показано во втором примере, не пишите байты после EOF, вместо этого используйте пробелы.
- Задний пробел в порядке.
- Встраивания в шестнадцатеричный дамп, если он у вас есть в этом конкретном формате, не запрещаются, а осуждаются.
- Непечатаемые символы относятся к любому символу, который, представленный только как один байт, не может быть представлен в виде одного глифа с интервалом. Для UTF-8, то это означает
0-31
,128-255
. Для кодовой страницы желе , так как все символы могут быть представлены в виде одного глифа с интервалом, нет непечатаемых символов.
xxd
это?