unsigned char 数组与 long 类型互转
C/C++ 中,如果需要将 int 或者 unsigned int 以及 long 和 unsigned long 类型数据互转,则可以参考一下代码
#include<cstdio> typedef unsigned int uint32_t; typedef unsigned long int uint64_t; typedef unsigned char uint8_t; bool transferLong2ByteArray(uint8_t* byte, uint8_t length, uint64_t version){ uint64_t temp = version; for(uint8_t i = 0; i < length; ++i){ uint8_t res = (uint8_t)(temp & 0xff); byte[i] = res; temp = temp >> 8; } return true; } uint64_t transferByteArrayToLong(uint8_t* byte, uint8_t length) { uint64_t version = 0; #if 1 for(int i = 0; i < length; ++i){ uint64_t temp = byte[i]; version |= (temp << i * 8); } #else long s = 0; long s0 = (byte[0] & 0xff); long s1 = (byte[1] & 0xff) << 8; long s2 = (byte[2] & 0xff) << 16; long s3 = (byte[3] & 0xff << 24); version = s0 | s1 | s2 | s3; #endif return version; } int main() { uint32_t version = 0x000710; uint64_t longVersion = (uint64_t)version; uint8_t byte[4] = {0}; transferLong2ByteArray(byte, 4, longVersion); uint64_t finalVersion = transferByteArrayToLong(byte, 4); printf("vrsion %ld\n", finalVersion); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)