上次介紹了一種字串轉化為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 ...