當前位置:首頁 » 編程語言 » c語言16進制轉二進制

c語言16進制轉二進制

發布時間: 2022-10-28 09:42:11

c語言怎麼把16進制轉化為二進制

//將16進制的數保存到一個數組中,並將它一個個輸出
#include<stdio.h>
#defineN16
intmain()
{
intn;
inta[N];
inti;
printf("Inputa16進制數:");
scanf("%x",&n);
for(i=0;i!=N;++i)
{
a[N-1-i]=n%2;
n/=2;
}
for(i=0;i!=N;++i)
{
printf("%d",a[i]);
if((i+1)%4==0)
printf("");
}
printf(" ");
return0;
}

示例運行結果:

Input a 16進制數: abcd

1010 1011 1100 1101

⑵ C語言:怎麼將十六進制字元串轉換成二進制字元串,誰幫我寫個函數

十六進制轉成十進制的函數:
//返回16進制字元串s對應的整數值,遇到任何一個非法字元都返回-1。
int
HexToDec(char
*s)
{
char
*p
=
s;
//空串返回0。
if(*p
==
'\0')
return
0;
//忽略開頭的'0'字元
while(*p
==
'0')
p++;
int
dec
=
0;
char
c;
//循環直到字元串結束。
while(c
=
*p++)
{
//dec乘16
dec
<<=
4;
//數字字元。
if(c
>=
'0'
&&
c
<=
'9')
{
dec
+=
c
-
'0';
continue;
}
//小寫abcdef。
if(c
>=
'a'
&&
c
<=
'f')
{
dec
+=
c
-
'a'
+
10;
continue;
}
//大寫ABCDEF。
if(c
>=
'A'
&&
c
<=
'F')
{
dec
+=
c
-
'A'
+
10;
continue;
}
//沒有從任何一個if語句中結束,說明遇到了非法字元。
return
-1;
}
//正常結束循環,返回10進制整數值。
return
dec;
}
十進制轉成二進制的函數:
/*遞歸法求二進制數*/
#include

void
printb(int
x,int
n);
void
main()
{
int
x;
printf("input
number:");
scanf("%d",&x);
printf("number
of
decimal
form:
%d\n",x);
printb(x,sizeof(int)*8);
putchar('\n');
}
void
printb(int
x,int
n)
{
if(n>0)
{
putchar('0'+(
(unsigned)(x
&
(1<<(n-1)
)
)>>(n-1)));
printb(x,n-1);
}
}

⑶ 十六進制轉換成二進制

將十六進制數轉換為二進制數:

方法一:

將每一位的十六進制數轉換為相應的4位二進制數,參照轉換表直接轉換如下:

方法二:

先把16進制每個數轉為十進制,十六進制的1-9也對應十進制的1-9,十六進制的A-F對應十進制的10-15,再通過十進制轉化為二進制(將十進制數連續除2,直至得0餘x,並將每次的余數從右至左記下),最後將所得的四位二進制數順序排列。

舉例:

對於十六進制數字F6:

採用方法一:

F=1111,6=0110

所得即為11110110

採用方法二:

f=15 除2得 7餘1

7 除2得 3餘1

3除2得1餘1

1除2得0餘1

將余數從下往上(從1的余數1到15的余數1)排列,所以f=1111

同理6=0110

得f6=11110110

⑷ 用C語言編程將十六進制轉換為二進制

十進制轉二進制:-----------------------------------------------
#include
#include
void
main()
{
int
d,n,i,j,a[50],outformat=1;
printf("輸入一個數:");
scanf("%d",&n);
if(n==0)
printf("\n十進制
0
轉換二進制數:0");
else
{
printf("\n十進制
%d
轉換二進制數:1",n);
for(i=1;n!=1;++i)
{
d=n%2;
a[i]=d;
n=n/2;
}
for(j=i-1;j>0;--j)
{
if
(outformat%4==0)
printf("
");//取模的目的是為了每4個一組
++outformat;
printf("%d",a[j]);
}
}getch();
}
十進制轉十六進制:-----------------------------------------------
#include
void
main()
{
int
u10;
char
u16[10];
int
w=0,a,b,i;
printf("請輸入一個數字-->");
scanf("%d",&u10);
if(u10==0)
{
u16[0]='0';
w++;
}
else
{
a=u10;
while(a)
{
b=a%16;
if(b<10)
{
u16[w]='0'+b;
}
else
{
u16[w]='a'+b-10;
}
a=a/16;
w++;
}
}
printf("\n");
printf("%d(10)轉換為16進制數字為:",u10);
for(i=w-1;i>=0;i--)
{
printf("%c",u16[i]);
}
printf("\n");
}

⑸ 求c語言16進制轉2進制的代碼 要有注釋不然看不懂 謝謝 救命

/*
十六進制的一個位 對應 二進制的四個位
二進制 十六進制
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 a
1011 b
1100 c
1101 d
1110 e
1111 f

比如十六進制的 7af = 0111 1010 1111
*/
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
typedef struct hex
{
string er_hex;
string sl_hex;
} Hex;

Hex flag[16] = {//十六進制與二進制 對應 初始化
{"0000","0"},{"0001","1"},{"0010","2"},{"0011","3"},
{"0100","4"},{"0101","5"},{"0110","6"},{"0111","7"},
{"1000","8"},{"1001","9"},{"1010","a"},{"1011","b"},
{"1100","c"},{"1101","d"},{"1110","e"},{"1111","f"}};

int main()
{
/*for (int i = 0; i < 16; i++)
{
cout << flag[i].er_hex << " " << flag[i].sl_hex << endl;
}*/
string str;
cout << "請輸入一個十六進制數" << endl;
cin >> str;
cout << "十六進制數 " << str << "二進制為:";
for (int j = 0; j < str.length(); j++)
{
for (int i = 0; i < 16; i++)
{ //檢查輸入的十六進制的每一位 並翻譯成相應的二進制
if(str[j] == flag[i].sl_hex[0])
cout << flag[i].er_hex << " ";
}
}
cout << endl;
return 0;
}
//PS:輸入的數一定要符合十六進制數要求 不然會出錯

⑹ C語言中,16進制如何轉換成2進制

十六進制換成二進制,就是一位換成四位就可以啦!0x3c,0x表示十六進制,3就換成0011,c就是十進制的十二,換成二進制為1011。合起來就是啦00111011,也可以把前面2個0去了,一般不去 .....

⑺ C語言中,十六進制轉二進制

//將16進制的數保存到一個數組中,並將它一個個輸出
#include <iostream>
using namespace std;

int main()
{
int n = 0x3C;
int a[8];
int i;
for (i = 0; i != 8; ++i)
{
a[8 - 1 - i] = n % 2;
n /= 2;
}
for (i = 0; i != 8; ++i)
{
cout << a[i];
}
cout << endl;
return 0;
}

⑻ C語言如何把一個十六進制數轉換為二進制數組輸出

樓下的程序應該是將16進制轉化為10進制數組,將其改進一下即可,也就是加上將十進制轉換為二進制的程序段:全程序如下:
#include <stdio.h>
void main(
{
int i;
int m = 0;
char c[10];
char *r;
scanf("%s",c);
if(c[0]!='0'&&c[1]!='x'&&c[1]!='X')/*判斷是不是十六進制數*/
{
printf("不是十六進制數\n");
}
else
{{
i = 2;
while (c[i]!='\0')
{
m = m*16+c[i]-'0';/*將十六進制數轉換為十進制數*/
i++;
}
if(m=0)
printf("%d\n",0);
else
for(i=0;m!=0;i++)/*將十進制數轉換為二進制數*/
{
*(r+i)=m%2;
m=m/2;
}
for(;i-->=0;)
printf("%d",*(r+i));/*輸出二進制數*/
printf("\n");
}
}關於十六進制直接轉換為二進制數,直接做很簡單,但是用程序實現起來不容易,所以先轉換為十進制,再轉為二進制,雖有點笨,也算是一種方法吧呵呵,我好久沒用c了,可能程序中有些錯誤,但是進制轉換演算法本身是沒有問題的,也許可以參考一下,希望對樓主有所幫助,早日解決問題

⑼ c語言 十六進制轉換為二進制 用函數做

我不會C語言,只會delphi
我給你一段delphi語言的代碼吧,我剛寫的
procere TForm1.Button1Click(Sender: TObject);
var s,s1:string;

m,i:integer;
begin

s:=edit1.text;

m:=length(s);//16進制字元串的長度

S1:='';

for i:=1 to m do

begin

case s[i] of //對於16進制的每一位,進行下面的操作

'0': S1:='0000'+S1;

'1': S1:='0001'+S1;

'2': S1:='0010'+S1;

'3': S1:='0011'+S1;

'4': S1:='0100'+S1;

'5': S1:='0101'+S1;

'6': S1:='0110'+S1;

'7': S1:='0111'+S1;

'8': S1:='1000'+S1;

'9': S1:='1001'+S1;

'A': S1:='1010'+S1;

'B': S1:='1011'+S1;

'C': S1:='1100'+S1;

'D': S1:='1101'+S1;

'E': S1:='1110'+S1;

'F': S1:='1111'+S1;

end;

end;

edit2.Text:=s1;
end;

我說一下我的思路,你可以修改一下,照這個思路做:
先定義一個 字元串變數 S1 ,用來存2進制字元串,並作為中間變數
十六進制的1位 表示 2進制的 4位
所以 對於16進制的每一位,看這個位是幾,如果是0 那就對S1加上『0000』,如果是1 那就加上』0001『,依次類推

⑽ 十六進制如何轉換成二進制

與十六進制數BC等值的二進制數是10111100,應該選擇B項。

將十六進制數轉換為二進制數,只需將每一位的十六進制數轉換為相應的4位二進制數,然後組合起來即可。

二進制與十六進制之間的轉換:

1、二進制數轉換成十六進制數

由於2的4次方=16,所以依照二進制與八進制的轉換方法,將二進制數的每四位用一個十六進制數碼來表示,整數部分以小數點為界點從右往左每四位一組轉換,小數部分從小數點開始自左向右每四位一組進行轉換。

2、十六進制轉換成二進制數

如將十六進制數轉換成二進制數,只要將每一位十六進制數用四位相應的二進制數表示,即可完成轉換。

熱點內容
新款天籟配置有什麼區別 發布:2025-01-06 03:54:40 瀏覽:918
b站限免緩存 發布:2025-01-06 03:54:37 瀏覽:400
如何去掉有密碼的文檔 發布:2025-01-06 03:44:53 瀏覽:746
mcts演算法 發布:2025-01-06 03:38:11 瀏覽:369
谷歌瀏覽器安卓哪個版本最穩 發布:2025-01-06 03:25:05 瀏覽:212
30萬現金買理財還是存儲型 發布:2025-01-06 03:24:55 瀏覽:653
阿里雲伺服器被審查 發布:2025-01-06 03:24:53 瀏覽:11
怎麼查看網頁保存的密碼 發布:2025-01-06 03:19:12 瀏覽:612
android開發地圖 發布:2025-01-06 03:11:17 瀏覽:100
手機應用存儲空間不足 發布:2025-01-06 03:06:32 瀏覽:743