C++ – 字节数组byte[]或者unsigned char[]与long的相互转换
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 字节数组byte[]或者unsigned char[]与long的相互转换
原文链接:https://www.stubbornhuang.com/2026/
发布于:2022年03月11日 23:40:53
修改于:2022年03月11日 23:40:53

设定long型长度为4字节。
1 long转字节数组
long型转字节数组byte[]或者unsigned char[]
void LongToBytes(long value, unsigned char* bytes)
{
size_t length = sizeof(long);
memset(bytes, 0, sizeof(unsigned char) * length);
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 字节数组转long
字节数组byte[]或者unsigned char[]转long型
long BytesToLong(unsigned char* bytes)
{
long value = bytes[0] & 0xFF;
value |= ((bytes[1] << 8) & 0xFF00);
value |= ((bytes[2] << 16) & 0xFF0000);
value |= ((bytes[3] << 24) & 0xFF000000);
return value;
}
3 使用示例
#include <iostream>
void LongToBytes(long value, unsigned char* bytes)
{
size_t length = sizeof(long);
memset(bytes, 0, sizeof(unsigned char) * length);
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);
}
long BytesToLong(unsigned char* bytes)
{
long value = bytes[0] & 0xFF;
value |= ((bytes[1] << 8) & 0xFF00);
value |= ((bytes[2] << 16) & 0xFF0000);
value |= ((bytes[3] << 24) & 0xFF000000);
return value;
}
int main()
{
unsigned char longByteArray[4];
long a = 10;
LongToBytes(a, longByteArray);
std::cout << BytesToLong(longByteArray) << std::endl;
return 0;
}
当前分类随机文章推荐
- C++ - 在两个互有依赖关系的类中使用std::shared_ptr和std::weak_ptr进行内存管理 阅读65次,点赞0次
- C++ – 字节数组byte[]或者unsigned char[]与long double的相互转换 阅读323次,点赞0次
- C++11 - 基于无锁队列的单生产者单消费者模型 阅读3904次,点赞1次
- C++ – 字节数组byte[]或者unsigned char[]与long long的相互转换 阅读433次,点赞0次
- C++11 - std::shared_ptr初始化的几种方式 阅读5311次,点赞2次
- C++ - 使用宏区分不同系统平台、不同编译器、不同编译模式等编译期宏使用总结 阅读469次,点赞0次
- C++11 - 使用std::thread,std::shared_future,std::promise并行化/多线程化for循环,提升处理速度 阅读714次,点赞0次
- C++ - int转string方法总结 阅读4215次,点赞0次
- C++ - Jni中的GetByteArrayElements和GetByteArrayRegion的区别和使用示例 阅读587次,点赞0次
- GCC/GG++中编译优化选项-O -O0 -O1 -O2 -O3 -Os -Ofast -Og -Oz各自的区别和作用 阅读379次,点赞0次
全站随机文章推荐
- C++11 - 委托机制的实现TinyDelegate 阅读783次,点赞0次
- 工具推荐 - 数学公式在线编辑并实时转换为Latex/Katex/MathML 阅读4649次,点赞3次
- Duilib - Label控件文本换行 阅读596次,点赞0次
- 资源分享 - 深度学习 花书 AI圣经(Deep Learning) 英文pdf下载 阅读2096次,点赞0次
- UnrealEngine4 - 将FTexture2DRHIRef保存为图片 阅读2288次,点赞0次
- UnrealEngine4 - C++层打印信息到屏幕 阅读1593次,点赞0次
- Python - 不定长函数参数列表 阅读1397次,点赞0次
- VTK读取序列的Dicom医学图片,用Marchingcube进行重建,并保存为obj文件 阅读4146次,点赞1次
- 资源分享 - Light & Skin Interactions - Simulations for Computer Graphics Applications 英文高清PDF下载 阅读686次,点赞0次
- Python3爬虫 - requests库 阅读3032次,点赞3次
评论
148