ColdFusion替代hex2bin函数PHP

时间:2015-07-20 12:36:20

标签: php coldfusion binary hex coldfusion-8

我想解码十六进制编码的二进制字符串;它将使用PHP的hex2bin函数。但我在ColdFusion中需要相同的东西。

PHP

 $key="43480170";

 echo hex2bin($key);

输出:CHp

我尝试过以下代码。但是这个ColdFusion代码没有给我结果,因为我在PHP中得到了它;

ColdFusion的

<cfset key="43480170" />

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

输出:每次运行时都不同。

我需要在ColdFusion中获得与' CHp '相同的结果。

2 个答案:

答案 0 :(得分:2)

您需要使用ColdFusion提供的函数将二进制表示转换为使用toString(xxx)的字符串而不是基础java函数xxx.toString(),因为它们将呈现不同的结果。这听起来很奇怪但不是,java是硬类型语言,你不能简单地将二进制数据转换为字符串表示,refer to this post。此外,如果您在原始CF代码中注意到,每次运行时输出都是不同的。

回到你的问题,你只需做一点改变就可以了:

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

您可以run the code here检查两种方法之间的输出差异。

更新

根据@Leigh对使用CharsetEncode()函数执行二进制到字符串转换的推荐方法的有用注释,代码将导致:

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

您可以使用更改检查updated gist

答案 1 :(得分:1)

你非常接近。这应该可以解决问题。

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

返回CHp