signed unsigned 引发的血案
来源:互联网 发布:windows上运行mac应用 编辑:程序博客网 时间:2024/06/05 22:37
bug描述:
问题产生于局域网传输一幅图片。
服务端负责发送,是由另一个同事用C#写的,我用C++写接收客户端。
我们约定在传输一幅图片前,先传固定4个字节的size信息,然后传图片数据。
结果发现有些图片总是末尾坏掉一截或是干脆就传不过来。
bug原因:
在我接收到size[4]后,我采用了size = size[3]*256*256*256 + size[2]*256*256+size[1]*256+size[0]的方式来将字符串转换为整形。
但是size[4]是char型字符串,于是在char型字符和整形相乘的过程中,char型被自动转换成了signed int型,于是出现负数,导致size计算出错。
在每个字符前加(unsigned char)转换一下就正确了。
当然这里还有另外一种得到size的方式, 强制转换指针类型,然后直接取值:size = *((unsigned int *)size);
0 0
- signed unsigned 引发的血案
- signed unsigned 的区别
- signed和unsigned的比较
- signed和unsigned的比较
- signed unsigned 的数值概念
- signed和unsigned的比较
- signed与unsigned的问题
- unsigned 和 signed 的区别
- signed与unsigned的问题
- signed和unsigned的比较
- signed unsigned 的数值概念
- signed和unsigned的比较
- unsigned和signed的转换
- unsigned 和 signed 的理解
- ActiveX引发的“血案”
- size_t引发的血案
- 一个 * 引发的血案
- gets引发的血案
- Eclipse快捷键
- MapReduce1-2:MapReduce任务的优化
- 汇编编程->ASM指令
- 自定义 Layer 属性的动画
- ascii 码表
- signed unsigned 引发的血案
- Ext.Net GridPanel Selection 后台取选中行
- MapReduc:1-3:计算Job运行时的CPU与内存平均利用率
- 工作问题积累(二十)销毁windows对象时,使用DestroyWindow而不是delete C++
- Qt中绘图坐标QPainter,Viewport与Window的关系
- 9G45平台MiniGUI3.0.12移植总结
- Kinect实现简单的三维重建
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- 55岁毕福剑打篮球狂揽73分 观众:不服不行