介紹三種將二進位制位元組字元轉換為ASCII方法
阿新 • • 發佈:2018-11-13
轉載地址:https://blog.csdn.net/rabbit729/article/details/3937528
下面程式碼分別給出了三種將二進位制位元組字元轉換為ASCII的方法
/* * @brief 該函式實現了將二進位制位元組資料轉換為可列印ASCII碼字串 * @param[in] pSrc 源資料指標 * @param[in] nSrcLength 源資料長度 * @param[out] pDst 目標字串指標 * @return 目標字串長度 */ #include <assert.h> #include <iostream> using namespace std; int BinaryBytes2String1(const unsigned char *pSrc, unsigned int nSrcLength, char *pDst) { if(pSrc == 0 || pDst == 0) return 0; char *p = pDst; for (unsigned i=0; i<nSrcLength; i++) { *p = (pSrc[i] >> 4) & 0x0f; *p += *p < 10 ? 0x30 : (0x61 - 10); p++; *p = pSrc[i] & 0x0f; *p += *p < 10 ? 0x30 : (0x61 - 10); p++; *p = pSrc[i] & 0x0f; *p += *p < 10 ? 0x30 : (0x61 - 10); p++; } *p = '/0'; return nSrcLength * 2; } int BinaryBytes2String2(const unsigned char *pSrc, unsigned int nSrcLength, char *pDst) { if (pSrc == 0 || pDst == 0) return 0; const char tab[] = "0123456789abcdef"; for (int i=0; i<nSrcLength; i++) { *pDst++ = tab[*pSrc >> 4]; *pDst++ = tab[*pSrc & 0x0f]; pSrc++; } *pDst = '/0'; return nSrcLength * 2; } int BinaryBytes2String3(const unsigned char *pSrc, int nSrcLength, char *pDst) { if (pSrc == 0 || pDst == 0) return 0; for (int i=0; i<nSrcLength; i++) { sprintf(pDst, "%02x", *pSrc); pDst++; pDst++; pSrc++; } *pDst = '/0'; return nSrcLength * 2; } void main(void) { unsigned char test[3] = {0x23, 0xa4, 0xB7}; char result[7]; memset(result, 0, 7); BinaryBytes2String1(test, 3, result); cout << result << endl; BinaryBytes2String2(test, 3, result); cout << result << endl; BinaryBytes2String3(test, 3, result); cout << result << endl; }
輸出結果為:
23a4b7
23a4b7
23a4b7