8進製字串轉16進製制字串(二)

2021-06-26 13:46:29 字數 2285 閱讀 7263

//寫乙個函式實現8進製字串到16進製制字串的轉換

//例如:

//輸入"755"結果是"1ed"

//輸入"777777777777"結果是"fffffffff" (注意超過了32位)

//答案2

//使用位段定義

#include #include struct tagdataforoctal

;struct tagdataforhex

;//8進製字串轉16進製制字串

//注:要保證phexstr指向記憶體空間的長度

bool convertoctalstrtohexstr(const char* poctalstr, char* phexstr)

int ncount = 0;

//獲取8進製字串的長度

int nlength = strlen(poctalstr);

if (nlength % 4 == 0)

else

//申請記憶體空間

char* pszoctalbuffer = new char[ncount*4];

if (pszoctalbuffer == null)

memset(pszoctalbuffer, 0, ncount*4);

//755 -> 5570

for (int i = 0; i < nlength; i++)

char* pszhexbuffer = new char[ncount*3];

if (pszhexbuffer == null)

memset(pszhexbuffer, 0, ncount*3);

int nindex = 0;

tagdataforoctal dataforoctal;

tagdataforhex* pdataforhex = null;

for (i = 0; i < ncount*4; i+=4)

else if (pszoctalbuffer[i] != 0)

if (pszoctalbuffer[i+1] != 0 && pszoctalbuffer[i+1] < '0' || pszoctalbuffer[i+1] > '7')

else if (pszoctalbuffer[i+1] != 0)

if (pszoctalbuffer[i+2] != 0 && pszoctalbuffer[i+2] < '0' || pszoctalbuffer[i+2] > '7')

else if (pszoctalbuffer[i+2] != 0)

if (pszoctalbuffer[i+3] != 0 && pszoctalbuffer[i+3] < '0' || pszoctalbuffer[i+3] > '7')

else if (pszoctalbuffer[i+3] != 0 )

//指標型別的轉換

pdataforhex = (tagdataforhex*)&dataforoctal;

nindex = i/4;

if (pdataforhex->n4bit1 >= 0 && pdataforhex->n4bit1 <= 9)

else if (pdataforhex->n4bit1 >= 10 && pdataforhex->n4bit1 <= 15)

if (pdataforhex->n4bit2 >= 0 && pdataforhex->n4bit2 <= 9)

else if (pdataforhex->n4bit2 >= 10 && pdataforhex->n4bit2 <= 15)

if (pdataforhex->n4bit3 >= 0 && pdataforhex->n4bit3 <= 9)

else if (pdataforhex->n4bit3 >= 10 && pdataforhex->n4bit3 <= 15)

}//轉換

for (int j = 0; j < ncount*3; j++)

//沒考慮16進製制字串最高位為0的情況 340 ->0e0 0得去掉

//釋放記憶體空間

if (pszoctalbuffer != null)

if (pszhexbuffer != null)

return true;

}int main(int argc, char* argv)

; if (convertoctalstrtohexstr(pszoctrl, szhexbuffer) == false)

else

return 0;

}

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

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

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

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

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

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