Я хотел бы декодировать шестнадцатеричную закодированную двоичную строку; Это будет работать с помощью HEX2BIN функция PHP. Но мне нужно то же самое в ColdFusion.
PHP
$key="43480170";
echo hex2bin($key);
Выход: CHp
Я попробовал приведенный ниже код. Но этот код ColdFusion не дает мне результата, как я его получил в PHP;
Холодный синтез
<cfset key="43480170" />
<cfoutput>#binaryDecode(key, "hex" ).toString()#</cfoutput>
Выход : Разные каждый раз, когда запустить его.
Мне нужно получить результат такой же, какChpв ColdFusion также.
Вам необходимо использовать функцию 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>
Вы можете проверить обновленная суть с изменениями.
Вы очень близки Это должно сделать свое дело.
<cfset key="43480170">
<cfoutput>#toString(binaryDecode(key, "hex" ))#</cfoutput>
Возвращает CHp