日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c语言字符串转16进制及16进制转字符串

發布時間:2023/12/31 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言字符串转16进制及16进制转字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般來說,加密解密的時候,密鑰的生成可能包含一些特殊的不可見字符,為了方便保存,我們可以將字符轉化成16進制
c語言中如何將字符串轉化成16進制,主要用一下函數

一:字符串轉16進制

sprintf((char*)(hex + j), “%02X”, bin[i]);即將一個字符按照%02X格式即16進制輸出

void bin2hex(unsigned char *bin,char *hex,int binlength) {int i = 0;int j = 0;for (i = 0,j = 0; i < binlength; i++, j += 2) {sprintf((char*)(hex + j), "%02X", bin[i]);printf(""+i);} }

我們知道,字符串轉16進制按照一個字符用兩個16進制的數字標識,所以原始字符串長度是n,16進制字符串就是2n,示例如下:

char *source="abc"; char hexstr[2*strlen(source)]; bin2hex(source,hexstr,strlen(source))

二:16進制轉字符串
這里重點是將兩個16進制轉成一個字符(hexcharToInt(hex[i]) << 4)| hexcharToInt(hex[i + 1]);第一個16進制字符先轉數字然后前移4位拼接第二個16進制字符同樣轉數字,然后強制轉化成char字符。

int hexcharToInt(char c) {if (c >= '0' && c <= '9') return (c - '0');if (c >= 'A' && c <= 'F') return (c - 'A' + 10);if (c >= 'a' && c <= 'f') return (c - 'a' + 10);return 0; } // void hex2bin(unsigned char *bin, char *hex, int binlength) {int i = 0;for (i = 0; i < strlen(hex); i += 2) {bin[i / 2] = (char)((hexcharToInt(hex[i]) << 4)| hexcharToInt(hex[i + 1]));} }

16進制字符串轉普通字符串,即兩個16進制數轉成一個字符,長度減半。
調用如下:

char *hexstr="13f2a4"; char *comstr[strlen(hexstr)/2]; hex2bin(comstr,hexstr,strlen(hexstr));

總結

以上是生活随笔為你收集整理的c语言字符串转16进制及16进制转字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。