RT!$v=time();
$para=(int)5566778899;
$v=$v^$para;
echo "time: ".$v."<br>";
描述:我是想获得距格林尼子时间的秒数,然后和一个数(eg:5566778899)异或位运算。但是返回的是一个负数,看网上的资料都是和ip地址挂钩的。如果要实现我的这个功能,应该怎么做呀??不胜感激!
$para=(int)5566778899;
$v=$v^$para;
echo "time: ".$v."<br>";
描述:我是想获得距格林尼子时间的秒数,然后和一个数(eg:5566778899)异或位运算。但是返回的是一个负数,看网上的资料都是和ip地址挂钩的。如果要实现我的这个功能,应该怎么做呀??不胜感激!
解决方案 »
- 简单的PHP伪缓存并定时抓取某页面内容
- 问一个问题
- PHP 偽靜態正則
- php上传至服务器,源代码不被解析?
- PHP 读文本文件的问题
- zend core有人用过吗,具体解释下呢。另外是不是用了这个不需要一个开发环境。eclipse可以吗?
- 请教sql语句问题。急。。多谢。。
- Undefined variable: id “的错误
- redhat9.0下怎么配置apache/php/mysql啊?
- mysql中用来进行密码转换的函数password在php中写sql语言的时候能用吗?怎么用?
- 如何把对应信息下的所有图片全部删除?我的代码只删除一张图片。。。
- 求一段正则是什么意思:$con= preg_replace('/shop_rate_list\((.*)\)/s','$1',$con);
echo $para; 看看还是多少呢?算法没问题,但可能已越界图方便你就试试gmp_系函数
//$para=(int)6814186432;
$para=(int)5566778899;
echo "para : ".$para."<br>";
echo "time : ".$v."<br>";输出为:para : 1271811603
time : 1338534056$v=(int)1338534056;
$para=(int)6814186432;
//$para=(int)5566778899;
echo "para : ".$para."<br>";
echo "time : ".$v."<br>";
$v=$v^$para^-1;
echo "v^para^-1 : ".$v."<br>";输出为:
para : -1775748160
time : 1338534056
v^para^-1 : 639610007当我的para参数为6814186432时,echo的是一个负数,应该就是溢出了,怎么解决?
$para=gmp_init(6814186432);
echo "para : ".gmp_strval($para,10) ."<br>";
echo "time : ".gmp_strval($v,10)."<br>";
echo gmp_strval(gmp_xor($v,$para),10);
输出结果:
para : 0
time : 1338534056
gmp_xor : 1338534056
还是对我在程序中用的para=6814186432 不正确啊
php 的整形数都是有符号的长整形$v = 1338534056;
$para = 6814186432;
//$para = 5566778899;echo "para : ".$para."<br>";
echo "time : ".$v."<br>";
$v = $v ^ $para;
echo "v^para : $v<br>";
if($v < 0)
echo "v^para^-1 : ".($v ^ -1)."<br>";
你可以 decbin 化成二进制表示看一下
v^para : -639610008
v^para^-1 : 639610007
这个结果和我用C运行出来的结果:3655357288。不一样。
我想要的是C运行出来的结果用PHP实现
echo decbin(-639610008);分别为
11011001111000000101001101101000
11011001111000000101001101101000没看出有什么区别
前面已经说了,php
只有 signed long
没有 unsigned long
但是我不知道PHP的语法知识,是边写程序边看书边请教您的,自然会存在一些问题。
如果您能够帮组我解决这个问题,我很是感激您呀
对于在PHP中,一个一样的二进制能表达两个数,我很是奇怪呀!因为我想得到的3655357288这个数,将要在接下来的程序中去运用,所以我只能用表面的值,虽然3655357288和-639610008在二进制表示上是一样的
$v=time();
$para=6814186432;
echo "para : ".$para ."<br>";
echo "time : ".$v."<br>";
$v=$v^$para;
echo "v^para".$v."<br>";
$v=bindec(decbin($v))."<br>";
echo "v: ".$v."<br>";
echo sprintf("%u",-639610008);
$v=time();
$para=6814186432;
echo "para : ".$para ."<br>";
echo "time : ".$v."<br>";
$v=$v^$para;
echo "v^para".$v."<br>";
$v=bindec(decbin($v))."<br>";
echo "v: ".$v."<br>";