❶ 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]!='