刚刚接触PHP,workerman通过tcp发送数字0,接收到数据却是48 [attach]1609[/attach]
[attach]1610[/attach] 可能很基础但却是搞不清楚,谢谢大家了
workerman发送的数字0是当作字符0发送的, C++客户端 (char ) p 接收到的就是对应的字符,所以强制转换成整型指针 (int ) p 后, printf("%d", *p) 输出的就是字符 0 对应的十进制数48, 所以:不要转换,直接 printf("%s", p) 就可以了。
那如何直接发送数字0呢?只能通过强制转换吗?
1、workerman的send($data) 其中 $data 参数最终都会被当做字符串来处理了,所以强制转换是没用的。 2、如果想传递整数,考虑使用php的pack函数将整数打包到二进制发送,这样C++客户端按照你一开始的方法读取就可以了,注意字节序即可。
workerman发送的数字0是当作字符0发送的, C++客户端 (char ) p 接收到的就是对应的字符,所以强制转换成整型指针 (int ) p 后, printf("%d", *p) 输出的就是字符 0 对应的十进制数48, 所以:不要转换,直接 printf("%s", p) 就可以了。
那如何直接发送数字0呢?只能通过强制转换吗?
1、workerman的send($data) 其中 $data 参数最终都会被当做字符串来处理了,所以强制转换是没用的。
2、如果想传递整数,考虑使用php的pack函数将整数打包到二进制发送,这样C++客户端按照你一开始的方法读取就可以了,注意字节序即可。