#php
#php
Вопрос:
Как я могу преобразовать числа из первого класса в PHP в числа из второго класса, есть ли встроенная функция для преобразования чисел? Также правильно ли мой заголовок «Преобразовать целое число в шестнадцатеричные значения«?
class Permission {
const READ = 1;
const UPDATE = 2;
const DELETE = 4;
const COMMENT = 8;
const GRANT = 16;
const UNDELETE = 32;
const WHATEVER = 64;
}
в это
class Permission {
const READ = 0x0001;
const UPDATE = 0x0002;
const DELETE = 0x0004;
const COMMENT = 0x0008;
const GRANT = 0x0010;
const UNDELETE = 0x0020;
const WHATEVER = 0x0040;
}
Обновить
Чтобы подробнее рассказать о том, что я пытаюсь сделать.
В настоящее время я использую первый класс с классом bitmask для настроек,
однако кто-то предложил мне перейти на формат во втором классе.
Однако я не знал, как они получили числа в стиле 0x0020 из чисел в моем 1-м классе.
Теперь я вижу, как получить 20 из 32, но я не знаю, как и почему они добавили перед ним 0x00, чтобы сделать 0x0020 вместо моего исходного 32
Комментарии:
1. Зачем вам нужно их преобразовывать?
Ответ №1:
Вы хотите:
dechex()
http://php.net/manual/en/function.dechex.php
Которые преобразуются из десятичных в шестнадцатеричные.
Ответ №2:
Вы не можете просто ввести шестнадцатеричные числа для начала?
Попробуйте sprintf() /printf() преобразовать их на лету:
printf('%x', 42); // 2a
Комментарии:
1. О, я вижу что-то вроде printf(‘0x00%x’, 64); дало бы результат, спасибо
Ответ №3:
Я здесь немного запутался… 0x01 = 1. 0x020 = 32 и т.д.
Ищете ли вы какие-нибудь формататоры строк, подобные доступным в printf / sprintf? Вы можете использовать маркер %x для вывода шестнадцатеричных значений.
редактировать: Также, да, ваши преобразования верны.
Комментарии:
1. Нули только повышают удобочитаемость. Обычно вы дополняете свои шестнадцатеричные числа нулями, чтобы визуально показать их размер (byte, word, dword и т.д.), Но это не обязательно. 0x20 = 0x0020 = 0x0000020 = 32 десятичных знака.