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

16進制轉2進制c語言

發布時間: 2023-06-11 11:23:35

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語言怎麼把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);
}
}

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

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

❺ 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『,依次類推

❻ c語言,如何將十六數轉換為二進制數組,再將二進制數組逆序後,輸出新的十六進制數;

有一個遲猜非常簡單的演算法,直接映射:
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
每位十六進制閉局數用四位二進製表示 。
例如:轎旦讓
(1DE)16 =(1 1101 1110)2

熱點內容
簡單的c語言編譯器 發布:2025-02-13 16:20:57 瀏覽:952
大眾空調登錄密碼多少 發布:2025-02-13 16:16:08 瀏覽:33
等差數列求和c語言 發布:2025-02-13 16:10:05 瀏覽:714
安卓手機如何無密碼解鎖vivo 發布:2025-02-13 15:52:10 瀏覽:885
電信50m上傳 發布:2025-02-13 15:47:56 瀏覽:364
清理outlook2010緩存 發布:2025-02-13 15:43:30 瀏覽:55
ohem演算法 發布:2025-02-13 15:40:10 瀏覽:931
java編程課程 發布:2025-02-13 15:36:08 瀏覽:476
cs編譯 發布:2025-02-13 15:36:07 瀏覽:56
高級語言都要編譯解析型語言 發布:2025-02-13 15:06:32 瀏覽:305