//寫乙個函式實現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 ...