CMPP协议Msg_Id生成算法
实在搞不懂怎么生成这个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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这里面给你纠正一下思路
第一: 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字节,完美下面这种方法也是简单,逻辑上不好理解,但是还是挺简单的,学习了