C++ – 字节数组byte与int的相互转换
原创文章,作者:StubbornHuang,如若转载,请注明出处:《C++ – 字节数组byte与int的相互转换》https://www.stubbornhuang.com/960/
一个字节为8位二进制位
1 int转字节数组byte[]
C++中,字节数组byte通常用unsigned char表示,所以int转换为字节数组本质上是将int转换为unsigned char数组。int一般为4个字节,那么就为32位二进制位表示。
代码如下:
void IntToByte(int value, unsigned char* bytes, int size = 4)
{
memset(bytes, 0, sizeof(unsigned char) * size);
bytes[0] = (unsigned char)(0xff & value);
bytes[1] = (unsigned char)((0xff00 & value) >> 8);
bytes[2] = (unsigned char)((0xff0000 & value) >> 16);
bytes[3] = (unsigned char)((0xff000000 & value) >> 24);
}
2 字节数组byte[]转int
代码如下:
int ByteToInt(unsigned char* byteArray, int length)
{
int value = byteArray[0];
value |= (byteArray[1] << 8);
value |= (byteArray[2] << 16);
value |= (byteArray[3] << 24);
return value;
}
3 使用场景
例如在有些情况下的通信协议,举一个简单的栗子,在socket通信下,我们通常会想要知道本次接收的数据的长度有多大,那么这个时候就可以在要发送数据块的前面使用4个字节标志数据块的大小,而这时候就需要将int转换为字节数组。
当前分类随机文章推荐
- C++11/std::thread - 线程的基本用法
- C++ 11 - final关键字简要介绍
- C++11/std::thread - 可作为线程函数的几种方式总结
- C++ - int转string方法总结
- C++11/std::condition_variable - 生产者消费者模型
- C++ - 得到字符串中某个字符串出现的个数
- C++11/std::thread - 线程管理join/detach
- C++11/std::atomic - 原子变量(不加锁实现线程互斥)
- C++11 - 基于无锁队列的单生产者单消费者模型
- C++ - 使用Websocket++编写客户端连接WebSocket服务器并进行通信
全站随机文章推荐
- 我的开源项目 - 各种搜索引擎收录查询接口(Google/百度/必应/360/搜狗......)
- WordPress - 在浏览器的console输出信息
- 资源分享 - Computational Geometry - Algorithms and Applications, 3rd Edition英文pdf下载
- Google Adsense - 从Google Adsense开通到第一个10美元我用了一年时间
- C++11 - std::function简要介绍以及可包装函数的几种形式总结
- OpenGL地球与太阳绕转代码
- Python3爬虫 - requests库的requests.exceptions所有异常详细说明
- opencv-python - 读取视频,不改变视频分辨率修改视频帧率
- Marching Cube(C++ OpenGl代码)读取医学三维图像*.raw进行三维重建
- C++ - vector存储动态指针时正确释放内存