PHP: Base64 解码以将字符串转换为其他格式,如十进制或二进制
PHP: Base64 decode to convert string to other formats like decimal or binary
我正在尝试使用一项服务 "base64 converts" 他们的数据,然后他们将这些数据推送到我的服务器。数据分为三种数据类型:字符串、整数和布尔值。为什么要这样打包我不明白,还是要我来破解。
我有一个字符串 Qjo0MDk2
应该转换为 B:4096
并且 PHP 的原生 base64_decode
函数有效!
但是,如果我尝试将 AAATmg==
转换为以 10 为底(十进制)的整数值,我想得到 5018
,但 base64_decode
什么也没有给我。 (我假设是因为它试图转换为一个字符串,而不是一个以 10 为基数的整数。)
同样,AA==
应转换为 base-2(二进制)布尔值的 0
,而 AQ==
应转换为相同的 1
。
是否有一组函数可以在某处执行此操作?我无法想象这是新的。这是今天做的一个网站,但是没有暴露代码:https://conv.darkbyte.ru/
二进制数据不能简单地打印出来,这就是为什么您在 base64_decode
中看不到任何东西,但数据就在那里。如果你想真正看到一些东西,你需要将数据转换为十六进制(技术上转换为十六进制表示)。由于看起来第三方应用程序正在执行此操作(尽管是在另一个方向),因此您必须对所有数据执行此操作。
AA==
和 AQ==
的数据表示在 if
语句中使用时是相同的,即使它们是 00
和 01
十六进制。它们是 true
-ish 到 PHP,因此执行 if
部分。如果你真的想检查它们的状态,你必须将它们转换为 int
(从十六进制表示)。
(int) bin2hex(base64_decode("AA==")) // int(0)
(int) bin2hex(base64_decode("AQ==")) // int(1)
尝试直接从二进制转换为 int
将导致 int(0)
。所以你在处理来自第三方应用的数据时一定要谨慎。
我正在尝试使用一项服务 "base64 converts" 他们的数据,然后他们将这些数据推送到我的服务器。数据分为三种数据类型:字符串、整数和布尔值。为什么要这样打包我不明白,还是要我来破解。
我有一个字符串 Qjo0MDk2
应该转换为 B:4096
并且 PHP 的原生 base64_decode
函数有效!
但是,如果我尝试将 AAATmg==
转换为以 10 为底(十进制)的整数值,我想得到 5018
,但 base64_decode
什么也没有给我。 (我假设是因为它试图转换为一个字符串,而不是一个以 10 为基数的整数。)
同样,AA==
应转换为 base-2(二进制)布尔值的 0
,而 AQ==
应转换为相同的 1
。
是否有一组函数可以在某处执行此操作?我无法想象这是新的。这是今天做的一个网站,但是没有暴露代码:https://conv.darkbyte.ru/
二进制数据不能简单地打印出来,这就是为什么您在 base64_decode
中看不到任何东西,但数据就在那里。如果你想真正看到一些东西,你需要将数据转换为十六进制(技术上转换为十六进制表示)。由于看起来第三方应用程序正在执行此操作(尽管是在另一个方向),因此您必须对所有数据执行此操作。
AA==
和 AQ==
的数据表示在 if
语句中使用时是相同的,即使它们是 00
和 01
十六进制。它们是 true
-ish 到 PHP,因此执行 if
部分。如果你真的想检查它们的状态,你必须将它们转换为 int
(从十六进制表示)。
(int) bin2hex(base64_decode("AA==")) // int(0)
(int) bin2hex(base64_decode("AQ==")) // int(1)
尝试直接从二进制转换为 int
将导致 int(0)
。所以你在处理来自第三方应用的数据时一定要谨慎。