網站首頁 編程語言 正文
1、把獲取到的16進制數據轉換成相同字符的ASCII字符,例:get[2] = {0x11,0x22};? →? put[4]={'1','1','2','2'};
數據的轉換主要通過sprintf();來完成的,對于該函數網上有許多講解,想要了解的可以查看一下。
typedef unsigned char uint8_t; char data[64]; uint8_t *hex_to_ascii(uint8_t *str, uint32_t len) { uint8_t *hex_buf = str; for (int i = 0; i < len; i++) { sprintf(&data[i * 2], "%02X", hex_buf[i]); } return (uint8_t *)data; }
2、 把獲取到的ASCII字符轉換成相同字符的16進制,例:get[4]={'a','a','b','b'}; →? put[2] = {0xaa,0xbb};
ASCII轉換成16進制主要通過sscanf();來完成的。
typedef unsigned char uint8_t; char data[64]; uint8_t *ascii_to_hex(char *str, uint32_t len) { char *str_buf = str; uint8_t *hex = (uint8_t *)data; uint8_t data_buf[len]; for (int i = 0; i < len; i++) { sscanf(str_buf, "%02x", (int *)&data_buf[i]); str_buf += 2; } memcpy(hex, data_buf, len); return hex; }
3、把獲取到的16進制轉換成對應的ASCII字符,例:get[4]={'a','a','b','b'}; → put[4]={0x61,0x61,0x62,0x62};
typedef unsigned char uint8_t; char data[64]; uint8_t *Char_to_Hex(char *str,uint32_t len) { char *hex_buf = str; uint8_t *hex = (uint8_t *)data; for (int i = 0; i < len; i++) { if ((hex_buf[i] >= '0') && (hex_buf[i] <= '9')) //0x30--0x39 hex_buf[i] += 0x30; else if ((hex_buf[i] >= 'a') && (hex_buf[i] <= 'z')) //0x61--0x66 hex_buf[i] += 0x61; else if ((hex_buf[i] >= 'A') && (hex_buf[i] <= 'Z')) //0x41--0x46 hex_buf[i] += 0x41; else hex_buf[i] += 0xff; } memcpy(hex, hex_buf, len); return hex; }
4、把獲取到的ASCII轉換成對應的16進制字符,例:get[4] = {0x61,0x61,0x62,0x62}; → put[4]={'a','a','b','b'};
typedef unsigned char uint8_t; char data[64]; uint8_t *Hex_to_Char(char *str,uint32_t len) { char *hex_buf = str; uint8_t *hex = (uint8_t *)data; for (int i = 0; i < len; i++) { if ((hex_buf[i] >= 0x30) && (hex_buf[i] <= 0x39)) //0--9 hex_buf[i] -= 0x30; else if ((hex_buf[i] >= 0x41) && (hex_buf[i] <= 0x46)) //A--Z hex_buf[i] -= 0x37; else if ((hex_buf[i] >= 0x61) && (hex_buf[i] <= 0x66)) //a--z hex_buf[i] -= 0x57; else hex_buf[i] = 0xff; } memcpy(hex, hex_buf, len); return hex; }
原文鏈接:https://blog.csdn.net/YeXing_/article/details/122497564
相關推薦
- 2023-12-09 使用Redis實現接口防抖
- 2022-10-14 Jboss使用jndi配置數據源連接數據庫
- 2022-11-03 C++命名空間使用詳細介紹_C 語言
- 2023-02-17 react生命周期(類組件/函數組件)操作代碼_React
- 2022-05-26 Python學習之文件的讀取詳解_python
- 2022-12-09 Python字符串本身作為bytes進行解碼的問題_python
- 2022-09-16 Pandas索引排序?df.sort_index()的實現_python
- 2022-12-27 React組件間通訊傳值實現詳解_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支