php 16进制转换遇到奇怪的问题

2024-11-02 16:30:04
推荐回答(2个)
回答(1):

据我曾经遇到过类似问题的经验,你需要仔细查看下SQL语句,比如:如果某个变量内容里有单引号或双引号,那么,$db->query($sql)就会执行有误。

用echo "$sql"的办法查看输出的SQL语句是个简单的办法,但需要注意一点:输出的内容是在html里,也就是说,会经过浏览器的编码,你看到的并不一定是你输出的。

回答(2):

函数原型是:string base_convert ( string $number , int $frombase , int $tobase )
所以第一个参数必须是string。

var_dump( base_convert ( 'e4' , 16 , 2 ) );
var_dump( base_convert ( '0xe4' , 16 , 2 ) );
var_dump( base_convert ( '3d' , 16 , 2 ) );

否则,php会先尝试先转为string类型,即。
//Notice: Use of undefined constant e4 - assumed 'e4'

//注意这个提示性错误,默认会先当常量处理,如果不是有效常量,当作字符串'e4'
var_dump( base_convert ( (string)e4 , 16 , 2 ) );

var_dump( base_convert ( (string)0xe4 , 16 , 2 ) );
var_dump( base_convert ( (string)3d , 16 , 2 ) );//这样会抛出语法错误