c語言十六進位制字串轉十進位制,C語言十六進位制字串轉十進位制

2021-05-17 09:49:59 字數 6485 閱讀 9929

1樓:龍不悔

#include

#include

void main()

while(result!=0);

for(j=cindex-1; j>=0; j--)//翻轉後存放在b中

b[index++] = c[j];}}

b[index] = '\0';//加上串結束符puts(b);//輸出

}測試結果:

c語言中如何將16進位制字串轉化成10進位制整數?

2樓:匿名使用者

#include

#include

#include

int zh(char s)

return temp;

}int main()

3樓:匿名使用者

1、輸入字元

串3、反轉字串,並賦給字串陣列a

2、迴圈檢測陣列a,依次檢測1每個字元

5、判斷當前檢測的字元,如果屬於abcdef,則依次把abcdef 轉換為11....16,否則不做任何操作

6、累加,當前迴圈次數的16次方乘以當前字元的數值大小。

7、輸出總累加值就是10進位制整數

c語言程式設計 把十進位制轉換為十六進位制

4樓:黑白say晚安

方法一:

#include

#include

using namespace std;

string decinttohexstr(long long num)

string decstrtohexstr(string str)int main()

return 0;}

方法二:

#include

#include

#include

#include

#include

using namespace std;int main()

reverse(v.begin(), v.end()); string hexstr; if (v.

size() % 4 == 0)    if (temp <= 9) hexstr += temp; else hexstr += ('a' + temp - 10); } }

else

if (temp <= 9) else hexstr += ('a' + temp - 10); } } cout << hexstr << endl; return 0;}

擴充套件資料:

還有3種方式可以實現,其中兩種是使用系統函式,另一種是直接自己編寫。

下面的**就是3種方式的實現,包括2位的整數和任意整數(2的31次方以內)都可以。可自己選擇需要的實現方式。

利用系統函式有

1. char *  itoa ( int value, char * str, int base );value是要轉化的數字,str是轉化後的字串儲存的位置,base是進位制數(但是這個函式不是標準c函式,有些編譯器是不支援的!)。

所以**可以為:

char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

2. sprintf(str,"%x",value);str是轉化儲存的位置,%x表示十六進位制格式,value是要轉化的數字。所以**可以為:

char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

3. 自己編寫

如果引數只要兩位數的整數,那麼很簡單。

**如下:

#include #include char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

int main ()

5樓:匿名使用者

#include #include char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa) int main ()

擴充套件資料:

16進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……

所以,在第n(n從0開始)位上,如果是是數 x (x 大於等於0,並且x小於等於 15,即:f)表示的大小為 x * 16的n次方。

例:2af5換算成10進位制:

用豎式計算:

第0位: 5 * 16^0 = 5

第1位: f * 16^1 = 240

第2位: a * 16^2= 2560

第3位: 2 * 16^3 = 8192

-------------------------------------

10997

直接計算就是:

5 * 16^0 + f * 16^1 + a * 16^2 + 2 * 16^3 = 10997

16進位制到二進位制

由於在二進位制的表示方法中,每四位所表示的數的最大值對應16進位制的15,即16進位制每一位上最大值,所以,我們可以得出簡便的轉換方法,將16進位制上每一位分別對應二進位制上四位進行轉換,即得所求

6樓:我是一個麻瓜啊

程式設計程式如下:

擴充套件資料

十六進位制轉換十進位制

16進位制就是逢16進1,但我們只有0~9這十個數字,所以我們用a,b,c,d,e,f這六個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。

十六進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方,以此類推。在第n(n從0開始)位上,如果是數β (β大於等於0,並且β小於等於 15,即:f)表示的大小為 β×16的n次方。

假設有一個十六進數 2af5直接計算就是:5×160+f×161+a×162+2×163=10997

7樓:澀錦無弦

1、方法一:使用進位制轉換。

#include

#include

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source);

/* 返回ch字元在sign陣列中的序號 */

int getindexofsigns(char ch);

int main()

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source)

return sum;

}/* 返回ch字元在sign陣列中的序號 */

int getindexofsigns(char ch)

if(ch >= 'a' && ch <='f')

if(ch >= 'a' && ch <= 'f')

return -1;

}2、方法二:可以使用sscanf函式將以字串形式的十六進位制數轉換為整型的十六進位制。

sscanf函式的用法與printf函式很像,都是以格式化的形式進行操作。例如如下的例子中是將字串a23cd以十六進位制形式輸入a中,如果將"%x"換成為"%d"的話,就是將字串a23cd以十進位制形式輸入a中,這顯然是錯誤的,因為將a23cd轉換為十進位制的時候,無法解析a,cd等字元,所以得出的結果就是錯誤的。

int a;

sscanf("a23cd", "%x", &a);

printf("%x\n",a);

printf("%d\n",a);

linux@ubuntu:~/test$ ./a.out

a23cd

664525

擴充套件資料

c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

參考資料

8樓:岔路程式緣

稍等一會兒好嗎~~

#include

main()

else

else

a=a/16;

w++;}}

printf("\n");

printf("%d(10)轉換為16進位制數字為:",u10);

for(i=w-1;i>=0;i--)

printf("\n");}

9樓:匿名使用者

通過鍵盤輸入一個十進位制數,然後將其

10樓:匿名使用者

#include

int main(void)

i=0;

while(x)

for(j=i-1;j>=0;j--)

if(a[j]<=9)

printf("%d",a[j]);

else if(a[j]<=15)

printf("%c",a[j]+'a'-10);

printf("\n");

return 0;}

11樓:匿名使用者

#include

int main()

i = 0;

while(a > 0)

for(i--; i >= 0; i--)printf("%c", s[i]);

return 0;}

c語言如何將字元型的數字轉換為十進位制或八進位制或十六進位制的數????反過來呢????

12樓:匿名使用者

字元型的數字轉為十進位制的數是用這個字元-'0'即可,反過來就是+'0',僅適用0~9的數字。

轉八進位制和十六進位制需要通過十進位制進行轉換。

13樓:匿名使用者

c語言有轉換說明符

轉換說明符

%a(%a) 浮點數、十六進位制數字和p-(p-)記數法(c99)%c 字元

%d 有符號十進位制整數

%f 浮點數(包括float和doulbe)%e(%e) 浮點數指數輸出[e-(e-)記數法]%g(%g) 浮點數不顯無意義的零"0"

%i 有符號十進位制整數(與%d相同)

%u 無符號十進位制整數

%o 八進位制整數 e.g.0123

%x(%x) 十六進位制整數0f(0f) e.g.0x1234%p 指標

%s 字串

c語言中16進位制轉換為十進位制

14樓:路堯家的顧小言

最簡單的使用scanf()函式和printf()函式進行格式轉換,以16進位制格式輸入,再以10進位制格式輸出。

程式**如下:

#include

int main()

執行結果:

15樓:冉白竹汲長

上面的大哥真有毅力啊

#include

void

main()

16樓:

一、問題描述

十進位制數是指各位數字全部由小於10的數字(0..9)組成的數值,如123、45678等。十六進位制數是指各位數字全部由小於16的數字(0..

9,a..f)組成的數值,如ffff、1e5a等。將十進位制數轉換為十六進位制數是將全部由小於10的數字組成的數值轉換為全部由小於16的數字組成的數值,如十進位制數100轉換為二進位制數為64。

二、演算法分析

逐個取出16進位制數值各數字組成的字串中的字元,得到它的序號(0..15),累加序號乘以16的n次方的和,n按0、1、2的規律變化。最終的累加和即為轉換後的十進位制數。

for(i=len-1; i>=0; i--)三、參考程式

#include

#include

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source);

/* 返回ch字元在sign陣列中的序號 */int getindexofsigns(char ch);

int main()

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source)return sum;

}/* 返回ch字元在sign陣列中的序號 */int getindexofsigns(char ch)if(ch >= 'a' && ch <='f')if(ch >= 'a' && ch <= 'f')return -1;

}四、執行測試

16進位制數:       75bcd15

10進位制數:       123456789

十六進位制小數轉換為十進位制怎麼轉十進位制小數怎樣轉換為十六進位制?

十六進位制6a.3b轉十bai進位制 先寫十du六進位制各位上的基數 從個 zhi位1.開始,向左 dao寫,每位是右邊版位乘以權16,6a有兩位,則就寫兩位,從小數點向右邊寫,可以直接寫分數,每位是左邊位除以16,3b是兩位,則寫到兩位為止 16 1.1 16 1 256 6 a.3 b 將要轉換...

c語言十進位制轉二進位制,C語言十進位制轉二進位制

十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元陣列,int ...

c語言裡,八進位制,十六進位制,二進位制,十進位制怎麼互

n進位制轉 baim進位制,10進製表示,n,m均小 du於10 如果大zhi於10需要 dao特殊處回理,需要使用字串來答 輔助處理了 int convertnumber int x,int n,int m z 0 nn 1 while y return z void main c語言裡,注意,說...