??
QUOTE: hoho
作者 yquan 发布于 2003-08-01 分类:php基础编程
IP:202.103.24.68 用ip2long函数转换后的返回值直接用echo或者print输出会显示:-899213244,所以手册上讲必须用sprintf函数%u格式化输出,才能输出无符号的值:3395754052 。
-899213244和3395754052的二进制都是1100 1010 0110 0111 0001 1000 0100 0100,如何去掉前面的符号位啊?
我的目的在于不用sprintf格式化输出就能显示出无符号的结果3395754052!!
帮我啊。!!
逛论坛交流:强制类型转换的问题。
dd
帮顶
你有什么企图
那你想用什么输出?
我想用echo直接输出就可以得到无符号的结果啊。
为此我也困惑
这里并没有类型转换的问题啊,只是有符号到无符号的转换。
用 sprintf / printf 的确非常的方便,如果不想用也可以做一次
减法运算来解决。
32 位操作中 integer 的范围是 -2147483648 到 2147483647
所以求有符号的int值所对应的无符号的值94>
2147483648*2 - 899213244 = 3395754052
也94, 2的32次方加上有符号的integer数,这样就去掉符号了。
谢谢verdana,不过你的方法只是从数学的方法上来解决了这个问题,反正我现在做法更简单,先用dedbin函数,然后再bindec函数。
其实这样也不错哦。
8 条回复
回复