Преобразовать шестнадцатеричное число (любого размера) в двоичное число.
Входные ПОЗИТИВ шестнадцатеричное число с самого начала. Действительный вход всегда будет соответствовать следующему регулярному выражению: . Если входные данные не являются действительными шестнадцатеричными числами, то есть чем-либо, не соответствующим этому регулярному выражению, выходные данные должны быть . 0x
0x[0-9a-fA-F]+
0
Выходные данные
Шестнадцатеричный код, преобразованный в двоичный.
Выигрышные
правила Code-Golf, минимальное количество укусов (bytes)
.
Примеры
IN: 0x12
OUT: 10010
IN: 0xFF
OUT: 11111111
IN: 0XFF
OUT: 0
IN: #0ac4
OUT: 0
IN: 0x00101011
OUT: 100000001000000010001
IN: 0x525600
OUT: 10100100101011000000000
IN: 0x58f70555118ec400
OUT: 101100011110111000001010101010100010001100011101100010000000000
IN: 0x6669795966AF3000
OUT: 110011001101001011110010101100101100110101011110011000000000000
IN: 0b018474
OUT: 0
IN: 9577383
OUT: 0
IN: -483355
OUT: 0
IN: -0xf9ad92
OUT: 0
code-golf
base-conversion
Хашим Каяни
источник
источник
#0ac4
еще действительный контрольный пример?X
это верхний регистр).00011010
Ответы:
Pyth, 15 байт
Объяснение:
Тестирование
С разъяснением правил (которое
0x
должно быть в нижнем регистре) в OP вы можете удалитьr0
13 байт.источник
Python 2,
67626059 байтПопробуйте онлайн!
Версия с ошибками при неверном вводе (27 байт):
Попробуйте онлайн!
источник
05AB1E , 11 байт
Попробуйте онлайн!
объяснение
источник
0XFF
.0x
того, что я бы сказал, что конкретный контрольный пример неверен.Å?
или 10 байтов при использовании прежнего .Пакет, 402 байта
Принимает участие в STDIN. 8 строк тогда в основном тратятся впустую при проверке входных данных, поэтому интересными являются строки 11, которые заменяют каждую шестнадцатеричную цифру двоичным эквивалентом, но из-за ограничений пакета, с ведущей
.
строкой 12, которая удаляет все.
s, и строкой 14 , который удаляет ведущие 0. Однако для входных данных это не удается,0x0
поэтому я «аннулирую» те, что означает, что вместо этого выводится 0.источник
PHP,
66 6563 байтабеги как труба с
-F
.Без этого
0x
наихудшей проблемой будет то, что обаhexdec
иbase_convert
просто игнорируют символы, которые не являются шестнадцатеричными; но с этим, в любом случае должна быть явная проверка действительности.45 байт без
0x
:источник
echo stristr($a=$argn,"0X")==$a?decbin(hexdec(ltrim($a,Xx0))):0;
Это хорошая альтернатива? Это должно работать для данных тестовhexdec
иbase_convert
).echo decbin(hexdec(preg_filter("#^0x([a-f\d]+$)#i","$1",$argn)));
<?=
вместоecho
опции -FJavaScript (ES6),
109108 байтРаботает для любого размера ввода.
Контрольные примеры
Показать фрагмент кода
источник
0x1fffffffffffff
- акаNumber.MAX_SAFE_INTEGER
- и возвращает округленные результаты за это. К счастью, два больших тестовых случая округлены правильно.1
битами в результате. Кстати, вам нужно$
в первом регулярном выражении?$
. Идея состоит в том, чтобы получить конечный ноль, если его нет1
в результате.REXX, 45 байт
источник
Сетчатка , 149 байт
(обратите внимание на завершающий перевод строки)
Попробуйте онлайн!
Вот альтернативное решение стоимостью 7 байт: Попробуйте!
источник
Perl, 25
(код 24 + 1 флаг -n)
источник
JavaScript (ES6),
116111 байтНе ограничено 53 битами точности. Изменить: 5 байтов сохранены, переписав мое преобразование цифр, что также снижает мои языковые требования до ES6.
источник
0x00101011
, извините.8086 машинный код - 63 байта
Работает для любого ввода до 125 символов (максимальная длина командной строки в DOS)
источник
JavaScript (ES6),
535249505245 байт(Неконкурентный, так как он не обрабатывает входные данные любого размера; мне просто повезло с входными примерами)
источник
CJam , 24 байта
Попробуйте онлайн!
объяснение
источник
JavaScript (ES6), 107 символов
источник
Perl 6 , 35 байт
источник
Javascript, 63 байта
источник