當前位置:首頁 » 編程語言 » c語言16進制轉8進制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言16進制轉8進制

發布時間: 2022-01-14 22:26:39

c語言如何把十六進制轉換成八進制

摘要 1、給定n個十六進制正整數,輸出它們對應的八進制數。

❷ c語言二進制八進制十進制16進制怎麼轉換

二進制轉換成八進制數
(1)二進制數轉換成八進制數:對於整數,從低位到高位將二進制數的每三位分為一組,若不夠三位時,在高位左面添0,補足三位,然後將每三位二進制數用一位八進制數替換,小數部分從小數點開始,自左向右每三位一組進行轉換即可完成。例如:
將二進制數1101001轉換成八進制數,則
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8

(2)八進制數轉換成二進制數:只要將每位八進制數用三位二進制數替換,即可完成轉換,例如,把八進制數(643.503)8,轉換成二進制數,則
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二進制與十六進制之間的轉換
(1)二進制數轉換成十六進制數:由於2的4次方=16,所以依照二進制與八進制的轉換方法,將二進制數的每四位用一個十六進制數碼來表示,整數部分以小數點為界點從右往左每四位一組轉換,小數部分從小數點開始自左向右每四位一組進行轉換。
(2)十六進制轉換成二進制數
如將十六進制數轉換成二進制數,只要將每一位十六進制數用四位相應的二進制數表示,即可完成轉換。
例如:將(163.5B)16轉換成二進制數,則
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2

❸ C語言把16進制數轉化為8進制數求代碼

字元串格式的16進制數,輸出為8進制數,參考代碼如下:
#include<stdio.h>
void DectoOct(int n, int flag)
{
int t;
if(n==0) {
if(flag==1) printf("0");
return;
}
t=n%8;
DectoOct(n/8,0);
printf("%d",t);
}
void HexToOct(char b[])
{
int i=0,t=0;
char ch;
while((ch=b[i])!=0){
if(ch>='0'&&ch<='9')
t=t*16+ch-'0';
else if(ch>='A'&&ch<='F')
t=t*16+ch-'A'+10;
else if(ch>='a'&&ch<='f')
t=t*16+ch-'a'+10;
else return -1;
++i;
}
DectoOct(t,1);
}
int main()
{
HexToOct("1A");
return 0;
}

❹ C語言中字元串如何轉換為二進制、八進制、十進制、十六進制

什麼意思,?沒懂,,,是說轉為 2 8 16進制的整數?
只要是整數 int。就只有大小。沒有進制的區別。
所謂的進制,只是為了人為識別。
但是可以把整數,轉換為響應進制的字元串。
舉例
char num[] = "15";
int val = atoi(num); //字元串轉為整數

char tem[16] = {};
_itoa(val,tem,2);//整數轉為2進制字元串
_itoa(val,tem,8);//8進制
_itoa(val,tem,16);//16進制
_itoa(val,tem,10);

❺ C語言中的轉換說明%o和%0x,八進制和十六進制轉換

並不是說最高位為1 就是有符號的。
無符號的也有最高位為1的,只不過最高位並不代表正負,只有有符號數才用最高位表示正負的

❻ c語言十六進制轉八進制,這樣行嗎

顯然不對

十六進制輸入1F,對應的八進制應該是37,而你這樣輸出結果是117,顯然不對

❼ C語言中如何換算八進制=進制=十六進制

最簡單的辦法:
將數據換算成10進制(除2取余法),然後再用fprintf直接列印就好了

如下:
1 #include <stdio.h>
2 int
3 main(void)
4 {
5 int n=8;
6 fprintf(stdout,"八進制是:%o\n十六進制是:%x\n",n,n);
7
8 return 0;
9 }

如果還有問題,歡迎來http://groups.google.com/datastream來討論

❽ C語言編程,輸入十進制數輸出十六進制和八進制

可以通過下面的公式解決

#include<stdio.h>

const int maxn = 128;

const int index8 = 8;

const int index16 =16;

int main()

{int Array8[maxn];

int Array16[maxn];

int n, cot8 = 0;

scanf("%d", &n);

int m = n, cot16 = 0;

while(n) {Array8[cot8++] = n % index8;

n /= index8;}

while(m) {Array16[cot16++] = m % index16;

m /= index16;}

int i;

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

printf("%d", Array8[i]);

puts("");

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

(8)c語言16進制轉8進制擴展閱讀:

十進制轉十六進制的具體方法:

對於整數部分,用被除數反復除以16,除第一次外,每次除以16均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。

對於小數部分,採用連續乘以基數16,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」。

10進制數轉換成十六進制數,這是一個連續除以16的過程:把要轉換的數,除以16,得到商和余數,將商繼續除以16,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。

❾ c語言十六進制轉換為八進制

手工還是編程?
手工可以這樣:把16進制數從左至右按16進制各位上的「數」代表的二進制依次寫出來,比如0x9B8D7F6543D為,再從右至左每3位分開(最左端不足3位時在前面用0補齊)010,011,011,100,011,010,111,111,101,100,101,010,000,111,101。最後用八進制符號對應寫出來就可以了——233432775452075。十六進制數0x9B8D7F6543D的八進制就是233432775452075!
//#include "stdafx.h"//vc++6.0加上這一行.
#include "stdio.h"
#include "string.h"
void dtob(char *p,int n){
static i=0;
if(n) dtob(p,n/2);
if(n) p[i++]=n%2+'0';
}
int dtoo(char *p){
int x,i,k=strlen(p)%3;
for(x=i=0;i<k;(x*=2)+=p[i++]-'0');
for(;p[i];i+=3)
(x*=10)+=((p[i]-'0')<<2)+((p[i+1]-'0')<<1)+p[i+2]-'0';
return x;
}
void main(void){
int n;
char a[33]="";
printf("Type a hexadecimal number...\nn=0x");
scanf("%X",&n);
dtob(a,n);
printf("The binary is %s.\n",a);
printf("The octal %d.\n",dtoo(a));
}

❿ 數據 結構 16進制轉8進制代碼C語言

#include<stdio.h>

voidmain()

{

chara[20];

charb[40];

charc[40];

inti,n,data;

printf("輸入十六進制數據(長度20以內)");gets(a);

n=0;

for(i=0;a[i]!='';i++)

{

if((a[i]<'0')||(a[i]>'9'&&a[i]<'A')||(a[i]>'F'&&a[i]<'a')||a[i]>'f')

{

printf("輸入數據不合法! ");

return;

}

n++;

}

data=0;

for(i=0;i<n;i++)

{

if(a[i]<'9')

{

data=data*10+(a[i]-'0');

}

elseif(a[i]<'F')

{

data=data*10+(a[i]-'A')+10;

}

else

{

data=data*10+(a[i]-'a')+10;

}

}

printf("該數據的十進制數為:%d ",data);

n=0;

while((data/8)!=0)

{

b[n]=data%8;

data/=8;

n++;

}

b[n]=data%8;

n++;

b[n]='';

for(i=0;i<n;i++)

{

c[i]=b[n-i-1]+'0';

}

c[n]='';

printf("八進制數為:%s ",c);

}