Идеальное время для этого вопроса. @isaacg только что добавил новую функцию, которая позволяет значительно сократить такие числа.
Основной метод - преобразовать число в базовое 256 и преобразовать его в символы. Вы можете сделать это с помощью кода ++NsCMjQ256N
. Затем вы можете использовать результирующую строку в сочетании с C
, что в точности наоборот (конвертирует символы в int и интерпретирует результат как число base-256). Таким образом, вы получите 13 символов C"2ìÙ½}ü¶d"
. Некоторые из символов непечатаемые.
Но обратите внимание, что я сказал 13 символов, а не байтов. Если я скопирую символы и посчитаю с помощью https://mothereff.in/byte-counter , то будет написано 13 символов и 18 байтов. Это связано с кодировкой символов символов, по умолчанию UTF-8. И UTF-8 допускает только 2 ^ 7 различных 1-байтовых символов. Каждый символ c
с ord(c) > 127
фактически хранится с использованием двух байтов вместо одного.
И вот в игру вступила новая функция @ isaacg . Он изменил формат кода по умолчанию с UTF-8 на iso-8859-1. iso-8859 может представлять 256 символов с одним байтом. Так что теперь вы можете достичь 13 байтов. Это возможно только со стандартным компилятором, однако, он не работает в онлайн-компиляторе.
Сначала вы хотите , чтобы преобразовать число в шестнадцатеричные значения с помощью этого скрипта: jdm.[2.Hd"0"jQ256
. Это дает вам 12 32 ec d9 bd 07 7d fc b6 64
. Затем скопируйте эти числа в ваш кодовый файл с помощью hex-редактора (например, hexedit для linux).
Примечание:
- Очевидно, вы удаляете
"
в конце, если строка является последней частью кода.
- Это работает только в том случае, если в представлении base-256 ваших чисел нет
34
(байт 22
), так как это "
символ и будет конец строки. Побег работает, хотя ( 5C 22
).
- Кстати, когда вы откроете файл с помощью hex-редактора, вы, скорее всего, увидите байт
0A
или 0d 0a
конец, который вы можете удалить. Это только указывает на конец строки.