一.問(wèn)題分析
我們輸入一個(gè)真正意義上的十六進(jìn)制數(shù),0x開(kāi)頭,返回一個(gè)十進(jìn)制數(shù)。
二.思路生成
輸入一個(gè)十六進(jìn)制的數(shù),依次取出它的每一位,然后根據(jù)權(quán)值累加,得到10進(jìn)制值。
三.問(wèn)題解決及代碼
以C++為例
1.如何輸入一個(gè)16進(jìn)制數(shù),使用標(biāo)志符hex,cin>>hex>>"變量名"
如果指定了輸入進(jìn)制數(shù),如上,那么以后你輸入的都是hex即16進(jìn)制格式的數(shù)
int n,m,h;
//cin>>hex代表輸入的數(shù)是16進(jìn)制的,系統(tǒng)默認(rèn)是十進(jìn)制數(shù),
cin >>hex>> n>>m;
//已經(jīng)改變了輸入格式,因此h也是16進(jìn)制的
cin >> h;
//輸出沒(méi)有改變,則會(huì)將16轉(zhuǎn)成10進(jìn)制輸出
cout << n<<" "<<m<<" "<<h<<endl;
輸出結(jié)果如下,不按照16進(jìn)制格式即0x輸入,系統(tǒng)也會(huì)變成16進(jìn)制數(shù),第二行為10進(jìn)制輸出
2.如何將16進(jìn)制數(shù)n 每一位存儲(chǔ),并且計(jì)算各個(gè)位的權(quán)值,代碼如下
void fun3(int n) {
//計(jì)算轉(zhuǎn)化十進(jìn)制后和
unsigned int sum = 0;
//用數(shù)組來(lái)存儲(chǔ)16進(jìn)制各個(gè)位的數(shù)據(jù)
int i = 0; unsigned int arr2[10];
//每次循環(huán)取出最低一位存儲(chǔ)到arr2數(shù)組里
while (n > 0) {
//取最低位存儲(chǔ)到arr2的低位
arr2[i] = n % 16;
//輸出每次取的數(shù)
cout <<hex<< arr2[i] << " ";
i++;
//移除取出的數(shù)
n = n / 16;
}
cout << endl;
//計(jì)算權(quán)值,例如5fff, 輸出第三行即為sum每次累加的值
for (int j = i - 1; j >= 0; j--) {
sum = sum * 16 + arr2[j];
cout << hex << sum << " ";
}
cout << endl;
cout <<dec<< sum << endl;
}
關(guān)于輸出界面 第二行是每次循環(huán)取出的數(shù),第三行是每次sum累加的值,這樣更便于理解
C語(yǔ)言實(shí)現(xiàn)
下面代碼會(huì)給到詳細(xì)注釋,這里就不多贅述了
void fun3(int n) {
//計(jì)算轉(zhuǎn)化十進(jìn)制后和
unsigned int sum = 0;
//用數(shù)組來(lái)存儲(chǔ)16進(jìn)制各個(gè)位的數(shù)據(jù)
int i = 0; unsigned int arr2[10];
//每次循環(huán)取出最低一位存儲(chǔ)到arr2數(shù)組里
while (n > 0) {
//取最低位存儲(chǔ)到arr2的i位,i初始值為0
arr2[i] = n % 16;
//輸出每次取的數(shù)
//%x以hex16進(jìn)制輸出,%o就是oct八進(jìn)制輸出,%d就是dec十進(jìn)制輸出
printf("%x ", arr2[i]);
i++;
//移除取出的數(shù)
n = n / 16;
}
printf("\n");
//計(jì)算權(quán)值,例如5fff, 輸出第三行即為sum每次累加的值
for (int j = i - 1; j >= 0; j--) {
sum = sum * 16 + arr2[j];
//輸出每次sum累加的值
printf("%x ", sum);
}
printf("\n");
//輸出總值
printf("%x\n",sum);
}
關(guān)于輸出界面 第二行是每次循環(huán)取出的數(shù),第三行是每次sum累加的值,這樣更便于理解文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-760315.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-760315.html
到了這里,關(guān)于十六進(jìn)制數(shù)如何轉(zhuǎn)十進(jìn)制 C/C++實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!