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