PHP:Base64解码,将字符串转换为十进制或二进制等其他格式

PHP:Base64解码,将字符串转换为十进制或二进制等其他格式,php,base64,converter,Php,Base64,Converter,我正在尝试使用一个“base64转换”数据的服务,然后将数据推送到我的服务器。数据分为三种数据类型:字符串、整数和布尔值。我不明白他们为什么用这种方式包装,但要由我来破译它 我有一个字符串Qjo0MDk2,它应该转换成B:4096,PHP的原生base64_decode函数可以工作 但是,如果我尝试将AAATmg==转换为一个以10为基数(十进制)的整数值,我想得到5018,但是base64\u decode没有给我任何结果。(我假设是因为它试图转换为字符串,而不是以10为基数的整数。) 同样地

我正在尝试使用一个“base64转换”数据的服务,然后将数据推送到我的服务器。数据分为三种数据类型:字符串、整数和布尔值。我不明白他们为什么用这种方式包装,但要由我来破译它

我有一个字符串
Qjo0MDk2
,它应该转换成
B:4096
,PHP的原生
base64_decode
函数可以工作

但是,如果我尝试将
AAATmg==
转换为一个以10为基数(十进制)的整数值,我想得到
5018
,但是
base64\u decode
没有给我任何结果。(我假设是因为它试图转换为字符串,而不是以10为基数的整数。)

同样地,
AA==
应转换为base-2(二进制)布尔值中的
0
,而
AQ==
应转换为
1


是否有一组函数已经在某个地方实现了这一点?我无法想象这是新的。现在有一个网站这样做了,但是代码没有公开:

二进制数据不能简单地打印出来,这就是为什么你在
base64\u decode
中看不到一些东西,但是数据在那里。如果您想实际看到某些内容,则需要将数据转换为十六进制(从技术上讲是十六进制表示)。因为看起来第三方应用程序正在这样做(尽管方向相反),所以您必须对所有数据都这样做

if
语句中使用
AA=
AQ==
的数据表示形式时是相同的,即使它们是
00
01
十六进制。它们对PHP来说是
true
-ish,因此执行
if
部分。如果确实要检查它们的状态,则必须将它们转换为
int
(从十六进制表示)


尝试直接从二进制转换为
int
,将导致
int(0)
。因此,在处理来自第三方应用程序的数据时必须谨慎。

二进制数据不能简单地打印,这就是为什么在
base64\u decode
中看不到某些内容,但数据在那里。如果您想实际看到某些内容,则需要将数据转换为十六进制(从技术上讲是十六进制表示)。因为看起来第三方应用程序正在这样做(尽管方向相反),所以您必须对所有数据都这样做

if
语句中使用
AA=
AQ==
的数据表示形式时是相同的,即使它们是
00
01
十六进制。它们对PHP来说是
true
-ish,因此执行
if
部分。如果确实要检查它们的状态,则必须将它们转换为
int
(从十六进制表示)


尝试直接从二进制转换为
int
,将导致
int(0)
。因此,在处理来自第三方应用程序的数据时,您必须谨慎。

base64\u decode
确实为您提供了一些东西,但它是二进制的,因此如果您转储它,它只是一个字符,没有实际字符(=带有问号的符号)。有一些函数可以将二进制转换为十进制(和十六进制),测试表明,如果我尝试
bindec
,就会得到
0
。如果我先使用十六进制
hexdec(bin2hex(base64_decode(…)))
,它实际上是有效的。请注意,
5018
的编码值似乎是
NTAxOA===
而不是
AAATmg=
@CharlotteDunois,它适用于十进制/整数,谢谢!但是为什么这对二进制文件不起作用呢?当
AA==
应该给出
0
并且
AQ==
应该给出
1
时,它总是打印true。代码:if(base64_解码(“AA=”)回显“true”;否则回声“假”原因如下:@CharlotteDunois非常感谢您!好几天来我一直在用我的头来对付这件事!如果你作为答案提交,我会很高兴地接受它。
base64\u decode
确实给了你一些东西,但它是二进制的,所以如果你转储它,它只是一个字符,没有实际的字符(=带有问号的符号)。有一些函数可以将二进制转换为十进制(和十六进制),测试表明,如果我尝试
bindec
,就会得到
0
。如果我先使用十六进制
hexdec(bin2hex(base64_decode(…)))
,它实际上是有效的。请注意,
5018
的编码值似乎是
NTAxOA===
而不是
AAATmg=
@CharlotteDunois,它适用于十进制/整数,谢谢!但是为什么这对二进制文件不起作用呢?当
AA==
应该给出
0
并且
AQ==
应该给出
1
时,它总是打印true。代码:if(base64_解码(“AA=”)回显“true”;否则回声“假”原因如下:@CharlotteDunois非常感谢您!好几天来我一直在用我的头来对付这件事!如果你提交答案,我会欣然接受。
(int) bin2hex(base64_decode("AA==")) // int(0)
(int) bin2hex(base64_decode("AQ==")) // int(1)