字串16進製制儲存

2021-06-16 23:54:05 字數 1201 閱讀 2687

上次介紹了一種字串轉化為16進製制顯示的演算法,並封裝成了api,這個api可用於串列埠收到資料後按16進製制顯示字串,這次介紹串列埠按16進製制傳送字串的演算法,使用基於字元型別引數的模板函式實現。演算法原理是遍歷字串,將在區間'0'--'9','a'--'f','a'--'f'的字元轉化成對應的16進製制整數(範圍為閉區間0-15),如遇到連續2個可以轉換的字元,則將它們儲存在乙個無符號位元組內,如遇到不能轉化的字元,則略過繼續。**如下:

/**

* @brief 將字元轉化為對應的10進製數整數 ascii版本

* * 若字元不能轉化則返回-1

*/ templateinline char converthexchar(chart ch)

typedef std::vectorcbytearrayex;

/** * @brief 將字串轉化成對應的16進製制數形式儲存

* @param template chart 源字元型別

* @param src 源資料串

* @param size 要轉換的長度,字元數

* @param bytearray 存放結果的位元組陣列

* 如字串80 12 34 46 ad ff,對應的就是0x80,0x12,0x34,0x46,0xad,0xff

* 該函式會自動過濾不能轉換的字元,可轉換字元範圍在0--9,a--f,a--f區間

*/templateinline void strtohex(const chart* src,size_t len,cbytearrayex& bytearray)

if (n >= len)

low = converthexchar(src[n++]);

if (-1 == low)

bytearray.push_back(high * 16 + low);

}}/**

* @brief 將字串轉化成對應的16進製制數形式儲存

* @param template chart 源字元型別

* @param src 源資料串

* @param bytearray 存放結果的位元組陣列

*/templateinline void strtohex(const chart* src,cbytearrayex& bytearray)

**:

16進製制轉字串 字串轉16進製制

16進製制轉字串 void hextostr char pbdest,char pbsrc,int nlen pbdest nlen 2 0 字串轉16進製制 void strtohex char pbdest,char pbsrc,int nlen 一 將陣列轉換為十六進製製同值的字串 讀取陣列中...

java 16進製制字串轉16進製制

author yaodaqing 姚大慶 public class test 將兩個ascii字元合成乙個位元組 如 ef 0xef param src0 byte param src1 byte return byte public static byte unitebytes byte src0...

16進製制字串轉36進製字串

php任意進製之間轉換數字base convert 實際測試時因為有精度留失的問題,會導致換錯誤。warning 由於使用內部的 double 或 float 型別,base convert 的操作可能會導致大數值中的精度丟失。請參見本手冊的 浮點數 章節以便獲得更多詳細資訊。s be55d904 ...