实在搞不懂怎么生成这个MsgId求大神
尝试过如下写法 不对
public function msgId($spid, $sqid)
{
$timeStr = time();
echo sprintf("%02d%02d%02d%02d%02d%07d%05d", date('m', $timeStr), date('d', $timeStr), date('H', $timeStr), date('i', $timeStr), date('s', $timeStr), $spid, $sqid) , "\n";
return sprintf("%02d%02d%02d%02d%02d%07d%05d", date('m', $timeStr), date('d', $timeStr), date('H', $timeStr), date('i', $timeStr), date('s', $timeStr), $spid, $sqid);
}
pack("N2C", $this->msgId($Msg_src,$header['sequence_number']), 0)
在这里面给你纠正一下思路
第一: 64
位
里面只能存0-1之间的数值,也就是说都是2进制数据所以拼接一下2进制数据就好了
网关代码多少位我没洗数,序列号,什么的位数你自己调就行了
%04d%06d%05d%06d%06d【%021d%016d】<-这里
如果没算错的话是4+5+5+6+6+22+16应该是64位了,那么这64位是一个2进制的字符串,用bindec()转换成十进制的数值,存进数据库里面,那么数据库存贮的2进制数据就是符合你要的规定了,而且10进制数据,8位,64字节,完美下面这种方法也是简单,逻辑上不好理解,但是还是挺简单的,学习了