我正在尝试使用" base64转换"其数据的服务,然后将其推向我的服务器。数据分为三种数据类型:字符串,整数和布尔值。为什么他们以这种方式打包我不明白,但这取决于我。
我有一个字符串Qjo0MDk2
,该字符串应转换为B:4096
和PHP的本机base64_decode
功能工作!
但是,如果我尝试将AAATmg==
转换为Base-10(十进制)整数值,我想获得5018
,但是base64_decode
只给我什么也没有。(我认为是因为它试图转换为字符串,而不是基本10整数。)
同样, AA==
应该在基本-2(二进制)布尔值中转换为 0
,而 AQ==
则应在同一中转换为 1
。
是否有一组功能可以在某个地方进行?我无法想象这是新的。这是一个今天这样做的网站,但没有公开代码:https://conv.darkbyte.ru/
二进制数据不能简单地打印,这就是为什么您看不到base64_decode
中的东西,但数据在那里。如果您想真正看到某些东西,则需要将数据转换为十六进制(从技术上讲成十六进制表示)。由于看来第三方应用程序正在这样做(尽管在另一个方向上),因此您必须为所有数据做到这一点。
当您在if
语句中使用AA==
和AQ==
的数据表示形式是相同的,即使它们是00
和01
HexadeCimal-Wise。它们是 true
-对PHP,因此执行if
部分。如果您实际上想检查他们的状态,则必须将它们转换为int
(来自十六进制表示)。
(int) bin2hex(base64_decode("AA==")) // int(0)
(int) bin2hex(base64_decode("AQ==")) // int(1)
尝试直接从二进制转换为int
会导致int(0)
。因此,当您处理第三方应用程序中的数据时,您必须保持谨慎。