Альтернатива ColdFusion для функции hex2bin Переполнение стека

Я хотел бы декодировать шестнадцатеричную закодированную двоичную строку; Это будет работать с помощью HEX2BIN функция PHP. Но мне нужно то же самое в ColdFusion.

PHP

 $key="43480170";

echo hex2bin($key);

Выход: CHp

Я попробовал приведенный ниже код. Но этот код ColdFusion не дает мне результата, как я его получил в PHP;

Холодный синтез

<cfset key="43480170" />

<cfoutput>#binaryDecode(key, "hex" ).toString()#</cfoutput>

Выход : Разные каждый раз, когда запустить его.

Мне нужно получить результат такой же, какChpв ColdFusion также.

2

Решение

Вам необходимо использовать функцию ColdFusion для преобразования двоичного представления в строку, используя toString(xxx) а не основная функция Java xxx.toString() поскольку оба будут оказывать различный результат. Это звучит странно, но это не так, Java — это язык со строгой типизацией, вы не можете просто преобразовать двоичные данные в строковое представление, как это, обратитесь к этому сообщению. Кроме того, если вы заметили в своем исходном коде CF, вывод будет отличаться при каждом запуске.

Возвращаясь к вашей проблеме, вам просто нужно внести небольшие изменения, и она отлично работает:

<cfset key="43480170" />
<cfoutput>#toString(binaryDecode(key, "hex" ))#</cfoutput>

Вы можете запустите код здесь проверить разницу в выходных данных между двумя подходами.

Обновить:

После полезного комментария @Leigh на рекомендуемый способ выполнить двоичное преобразование в строку, используя CharsetEncode() функция, код будет приводить к:

<cfset key="43480170" />
<cfoutput>#CharsetEncode(binaryDecode(key, "hex" ),'utf-8')#</cfoutput>

Вы можете проверить обновленная суть с изменениями.

2

Другие решения

Вы очень близки Это должно сделать свое дело.

<cfset key="43480170">
<cfoutput>#toString(binaryDecode(key, "hex" ))#</cfoutput>

Возвращает CHp

1