博客專欄

EEPW首頁 > 博客 > C語言實現多字節與整型數據的相互轉換

C語言實現多字節與整型數據的相互轉換

發布人:電子禪石時間:2021-11-19來源:工程師

數據類型定義

typedef   signed          char int8_t;

typedef   signed short     int int16_t;

typedef   signed           int int32_t;

typedef   signed       __INT64 int64_t;

1

2

3

4

1、將多字節(2、4、8字節)轉換為整型數據(16、32、64位)

(舉例:2字節 {0x12, 0x34} → 16位整型 0x1234)

(舉例:4字節 {0x12, 0x34, 0x56, 0x78} → 32位整型 0x12345678)

(舉例:8字節 {0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56} → 64位整型 0x1234567890123456)

/***************************

函數名:   ArrayToVariable

功能描述: 將多字節(2、4、8字節)轉換為整型數據(16、32、64位)

參數:    Array:  待轉換數組

         Length: 待轉換數組的長度

返回:    轉換后的整型數據

***************************/

uint64_t ArrayToVariable(uint8_t *Array, uint8_t Length)

{

uint64_t Variable = 0;

if(Length == 2)

{

Variable = (((uint16_t)Array[0] << 8)  + ((uint16_t)Array[1]));

}

else if(Length == 4)

{

Variable = (((uint32_t)Array[0] << 24) + ((uint32_t)Array[1] << 16) 

  + ((uint32_t)Array[2] << 8)  + ((uint32_t)Array[3]));

}

else if(Length == 8)

{

Variable = (((uint64_t)Array[0] << 56) + ((uint64_t)Array[1] << 48) 

          + ((uint64_t)Array[2] << 40) + ((uint64_t)Array[3] << 32) 

          + ((uint64_t)Array[4] << 24) + ((uint64_t)Array[5] << 16) 

  + ((uint64_t)Array[6] << 8)  + ((uint64_t)Array[7]));

}

return Variable;

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

2、將16位整型數據轉換為2字節

(舉例: 16位整型數據 0x1234 → 2字節數組 {0x12,0x34})

/***************************

函數名:   Variable16ToArray

功能描述: 將16位整型數據轉換為2字節

參數:    Variable:待轉換的16位整型數據 

Array:轉換后的2字節數組

***************************/

void Variable16ToArray(uint8_t *Array, uint32_t Variable)

{

*(Array)     = (uint8_t)(Variable >> 8);

*(Array + 1) = (uint8_t)(Variable);

}


1

2

3

4

5

6

7

8

9

10

11

12

3、將32位整型數據轉換為4字節

(舉例: 32位整型數據 0x12345678 → 4字節數組 {0x12,0x34,0x56,0x78})

/***************************

函數名:   Variable32ToArray

功能描述: 將32位整型數據轉換為4字節

參數:    Variable:待轉換的32位整型數據 

Array:轉換后的4字節數組

***************************/

void Variable32ToArray(uint8_t *Array, uint32_t Variable)

{

*(Array)     = (uint8_t)(Variable >> 24);

*(Array + 1) = (uint8_t)(Variable >> 16);

*(Array + 2) = (uint8_t)(Variable >> 8);

*(Array + 3) = (uint8_t)(Variable);

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

4、將64位整型數據轉換為8字節

(舉例: 64位整型數據 0x1234567890123456 → 4字節數組 {0x12,0x34,0x56,0x78,0x90,0x12,0x34,0x56})

/***************************

函數名:   Variable64ToArray

功能描述: 將64位整型數據轉換為8字節

參數:    Variable:待轉換的64位整型數據 

Array:轉換后的8字節數組

***************************/

void Variable64ToArray(uint8_t *Array, uint64_t Variable)

{

*(Array) = (uint8_t)(Variable >> 56);

*(Array + 1) = (uint8_t)(Variable >> 48);

*(Array + 2) = (uint8_t)(Variable >> 40);

*(Array + 3) = (uint8_t)(Variable >> 32);

*(Array + 4) = (uint8_t)(Variable >> 24);

*(Array + 5) = (uint8_t)(Variable >> 16);

*(Array + 6) = (uint8_t)(Variable >> 8);

*(Array + 7) = (uint8_t)(Variable);

}


————————————————


原文鏈接:https://blog.csdn.net/lnfiniteloop/article/details/120015554


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: c

相關推薦

技術專區

關閉
中文天堂最新版在线www-bt天堂网www天堂-电影天堂 欧美在线香蕉在线视频
#耿直真香哥黑化卖惨# 我要我们在一起 外交部回应拜登重申不支持台独 男子写80页PPT拯救爱情却离婚 动物世界 中国共产党第三个历史决议全文发布 林丹世界排名被正式移除 国足最新出线概率0.08% #耿直真香哥黑化卖惨# 国际人士热议中共十九届六中全会 #耿直真香哥黑化卖惨# 周冠宇成为中国首位F1车手 大连一密接者擅自点外卖聚餐被调查 胡锡进谈中美元首会晤 动保组织向上饶信州区申请信息公开 扫黑风暴 北京冬奥火炬宣传片获金花环奖 意大利错失直接晋级世界杯资格 寻梦环游记 我要我们在一起 五个扑水的少年 男子写80页PPT拯救爱情却离婚 许家印为恒大注入超70亿续命资金 中美元首会谈重点内容 胡锡进谈中美元首会晤 大连一密接者擅自点外卖聚餐被调查 中美元首是否达成新共识?中方回应 国足最新出线概率0.08% 入殓师 得知母亲出事男子在地铁痛哭 红色通缉令 24岁救人牺牲消防员获批为烈士 美人鱼 胡锡进谈中美元首会晤 嘉南传 动物世界 苏宁易购回应破产传闻 #耿直真香哥黑化卖惨# 沙丘 许家印为恒大注入超70亿续命资金 大连一密接者擅自点外卖聚餐被调查 中美元首是否达成新共识?中方回应 俄方回应卫星碎片危及国际空间站 24岁救人牺牲消防员获批为烈士 星际穿越 林丹世界排名被正式移除 中美元首是否达成新共识?中方回应 中美元首是否达成新共识?中方回应 男子写80页PPT拯救爱情却离婚 林丹世界排名被正式移除 中美元首会谈重点内容 两个女人 红色通缉令 美人鱼 国足战澳大利亚大名单:4归化在列 罗永浩吐槽苹果文案没文化 24岁救人牺牲消防员获批为烈士 外交部回应拜登重申不支持台独 房价上涨城市创七年新低 拐点来了? 苏宁易购回应破产传闻 大连现超级传播者26人在同一传播链 罗永浩吐槽苹果文案没文化 动物世界 房价上涨城市创七年新低 拐点来了? 动保组织向上饶信州区申请信息公开 国足战澳大利亚大名单:4归化在列 你好李焕英 林丹世界排名被正式移除 得知母亲出事男子在地铁痛哭 动保组织向上饶信州区申请信息公开 意大利错失直接晋级世界杯资格
突泉县| 崇仁县| 鹿泉市| 金沙县| 罗山县| 永泰县| 星座| 黄平县| 绥棱县| 肇州县| 全椒县| 乐至县| 黄龙县| 安康市| 广水市| 东丰县| 苍溪县| 建宁县| 峨山| 杭锦旗| 海宁市| 阳城县| 丹江口市| 隆化县|