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 语句中使用时是相同的,即使它们是 0001 十六进制。它们是 true-ish 到 PHP,因此执行 if 部分。如果你真的想检查它们的状态,你必须将它们转换为 int(从十六进制表示)。

(int) bin2hex(base64_decode("AA==")) // int(0)
(int) bin2hex(base64_decode("AQ==")) // int(1)

尝试直接从二进制转换为 int 将导致 int(0)。所以你在处理来自第三方应用的数据时一定要谨慎。