我想解码十六进制编码的二进制字符串;它将使用PHP的hex2bin函数工作。但我在ColdFusion中也需要同样的东西。
$key="43480170";
echo hex2bin($key);输出: CHp
我试过下面的代码。但是这个ColdFusion代码并没有给出我在PHP中得到的结果;
ColdFusion
<cfset key="43480170" />
<cfoutput>#binaryDecode(key, "hex" ).toString()#</cfoutput>Output:每次运行时都不同。
我也需要得到与“CHp”在ColdFusion中相同的结果。
发布于 2015-07-20 13:43:54
您需要使用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>您可以使用更改检查更新要点。
发布于 2015-07-20 13:38:16
你们很亲密。这应该能起作用。
<cfset key="43480170">
<cfoutput>#toString(binaryDecode(key, "hex" ))#</cfoutput>返回CHp
https://stackoverflow.com/questions/31516701
复制相似问题