Учитывая вывод следующего утверждения в php
hex2bin(dechex(4112))
И выход для этого
"\020\020"
Я пришел к выводу, что это восьмеричное представление шестнадцатеричного представления указанного выше десятичного значения (4112
-> 0x1010
) каждая восьмеричная часть — это то, что находится между обратными слешами. Таким образом, три восьмеричные цифры используются для представления двух шестнадцатеричных цифр. Здесь 0x10
переводит на 020
в восьмеричном, поэтому мы получаем \020\020
за 0x1010
Но как называется эта кодировка? Откуда это взялось? Поиски в интернете по этому поводу сильно не помогли
Кроме того, почему следующее утверждение не выполняется?
hex2bin(dechex(123123))
Вы кодируете числа как двоичные данные таким образом, что на первом месте стоит самый значимый байт. Это называется представление с прямым порядком байтов.
Кодирование 123123 с помощью вашего метода завершается неудачно, потому что dechex выдает нечетное число цифр. Вам нужно две шестнадцатеричные цифры, чтобы сделать один байт, поэтому hex2bin требует, чтобы входная строка имела четную длину.
Других решений пока нет …