如何將二進位制轉換為八進位制 十進位制 十六進製制

2021-07-11 09:55:27 字數 973 閱讀 8439

值得注意的是,存放二進位制的陣列最後一位才是二進位制的第一位,例如:char bin[5]=」1100」,那麼bin[3] 才是二進位制的第一位.

1.二進位制–>八進位制

二進位制轉換為八進位制是非常簡單的,因為每三個二進位制就是一位八進位制.如果不足三位二進位制則補0.

例如: 10101 –>010 101 –>25

1101 –> 001 101 –> 15

思路有了,接下來就是把思路轉換為**寫出來即可.

**如下:

long

long bintooct(char* bin)

}//如果最後沒有構成三位二進位制,則不會進入到if語句,也就是會少加一次,這裡要補回來

return oct += powl(10, p++)*a;;

}

注意:這個函式最大支援57位2進製的轉換

2.二進位制 –> 十進位制

這個就太簡單了,直接求權值和就行了

long

long bintodec(char* bin)

注意:最大支援63位2進製的轉換

3.二進位制 –> 十六進製制

這個的思路和八進位制一樣,只不過這裡是4個為一組

void bintohex(char* bin, char* hex, int n = 20)

}if ((i % 4 && q) || i == 0)//防止k!=4漏加了乙個

temp[i++] = a[q];

k = 0;

while (i)

hex[k++] = temp[--i];//反轉過來

free(temp);

}

引數n = 20 是預設值,c++才支援,為什麼我要這樣寫呢?因為二進位制和十六進製制都是用陣列儲存的,所以,它們之間的轉換沒有限制,所以我用了動態分配記憶體,而大小就是傳進來的n.

如何將十六進製制轉換為 二進位制 八進位制 十進位制

1.十六進製制 二進位制 void hextobin char hex,char bin,int n 20 int temp int malloc sizeof int n memset temp,0,n 4 char h hex int i 0,j 0,k 0,g 0 while h 把十六進製制...

將二進位制 八進位制 十六進製制轉換為十進位制

將二進位制 八進位制 十六進製制轉換為十進位制 二進位制 八進位制和十六進製制向十進位制轉換都非常容易,就是 按權相加 所謂 權 也即 位權 假設當前數字是 n 進製,那麼 對於整數部分,從右往左看,第 i 位的位權等於ni 1 對於小數部分,恰好相反,要從左往右看,第 j 位的位權為n j。更加通...

十進位制轉換為十六進製制 八進位制 二進位制的程式設計

include 定義棧基本資料型別 typedef struct list int input 0 被轉化的十進位制數 int jinzhi 0 想要轉化成的進製數 void change 10 n list s,int n void putput list data list s,int n ma...