格式化字符串,有偿求助

该昵称很风骚 2010-11-01 04:24:44

$format = sprintf("vvvva%dVa8", 10); //格式化字符串
$head_data = pack(//封装包
$format,
0xFFAA,
0xFFAA,
6,
10,
11,
1,
time());

对方接受到的包(C++)的最后一个参数是个字符型:825831985,而这里的time()是1291046400,请问,我如何使对方接受到的包是1291046400而不是825831985,
...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhping821 2010-11-02
  • 打赏
  • 举报
回复
要看了C++规则才知道
帮顶。
nommo_studio 2010-11-02
  • 打赏
  • 举报
回复
我是进来每日回帖拿积分的
xuzuning 2010-11-02
  • 打赏
  • 举报
回复
你把 C++ 的规则贴出来
该昵称很风骚 2010-11-01
  • 打赏
  • 举报
回复
还是不行,对方接收到的还是和我的time不同,这里是把含有time这个包体通过socket传过去的

郁闷啊
该昵称很风骚 2010-11-01
  • 打赏
  • 举报
回复
谢谢foolbirdflyfirst,“规则”是C++方面订的,我必须按照他的接收方式发包
回头我试试改成a10
foolbirdflyfirst 2010-11-01
  • 打赏
  • 举报
回复
鉴于time()是10位数,pack的format关于时间戳的为什么是a8呢?这样不是会截断最后两位数么?
为什么不是
$format = sprintf("vvvva%dVa10", 10);
foolbirdflyfirst 2010-11-01
  • 打赏
  • 举报
回复
怎么pack的,就怎么unpack。你的问题和sprintf有关系么?
$format = sprintf("vvvva%dVa8", 10); //格式化字符串
$head_data = pack(//封装包
$format,
0xFFAA,
0xFFAA,
6,
10,
11,
1,
1291046400);
//你确认对方是按照你的pack格式反解的吗?
print_r($t = unpack('v4v/a10a/VV/a8time/',$head_data));
echo "<br/>";
echo $t['time'].'00';
该昵称很风骚 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 baiyuxiong 的回复:]
825831985是可变的吗?指啥意思?
[/Quote]
825831985是可变的,由我的time变化而变化,但是我的time经过sprintf一格式化,传给C++就走了样,我知道一定是这个sprintf引起的,我一直对这个函数不感冒,琢磨了很久还是用得不对

[Quote=引用 1 楼 lvhong84 的回复:]
貌似你的顺序不对
[/Quote]
兄台给指点指点
codeyell-com 2010-11-01
  • 打赏
  • 举报
回复
825831985是可变的吗?指啥意思?
lvhong84 2010-11-01
  • 打赏
  • 举报
回复
貌似你的顺序不对

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧