線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3415
推到 Plurk!
推到 Facebook!

VC++ 2.8.16進制的轉換

尚未結案
Miki-lion
中階會員


發表:90
回覆:180
積分:54
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-20 02:18:22 IP:218.162.xxx.xxx 未訂閱
最近開始學習這些內建涵式的語法,之前都是自己寫轉換的程式    想問一下下面的程式是用"語法"來將一個數字(10進制)轉換成16.10.8進制     1.做轉換的數字一定要是10進制嗎?(想做16進制轉別的之類的) 2.另外轉成16進制的數值是小寫的,可以不經過其他的處理,直接改成大寫的嗎?
#include
#include
//#include<math.h>
int main(void)
{
        int num;    FILE*fp;
fp=fopen("9.txt","r");
fscanf(fp,"%d",&num);    cout<< "hex=" << hex << num < #include
#include<math.h>
int main(void)
{
        int binary[100];
        char data[8];
        int i,temp,sum=0,count=0,n=1;;
    bool sign=false;
        
        FILE*fp;
        fp=fopen("9.txt","r");
        while(!feof(fp))
        {
        fscanf(fp,"%c",&data[count]);
        count  ;
        }
    
        for(i=(count-1);i>=0;i--)
        {
        
      switch(data[i])
          {
          case '0': sum=sum 0*n; break;
          case '1': sum=sum 1*n; break;
          case '2': sum=sum 2*n; break;
          case '3': sum=sum 3*n; break;
             case '4': sum=sum 4*n; break;
      case '5': sum=sum 5*n; break;
          case '6': sum=sum 6*n; break;
          case '7': sum=sum 7*n; break;
          case '8': sum=sum 8*n; break;
          case '9': sum=sum 9*n; break;
      case 'A': sum=sum 10*n; break;
          case 'B': sum=sum 11*n; break;
          case 'C': sum=sum 12*n; break;
          case 'D': sum=sum 13*n; break;
          case 'E': sum=sum 14*n; break;
             case 'F': sum=sum 15*n; break;
          }
          if(sum>0)
          n=n*16;
        }            if(data[0]=='-')
        sum=sum*-1;
        printf("轉成10進制:%d\n",sum);            if(sum<0){
    sum=fabs(sum);
        sign=true;
        }
        
        for(i=0;i<16;i  )
        {
                binary[i]=sum%2;
                temp=sum/2;
                sum=temp;
        }
        printf("Outut:\n");
        printf("signed:");            for(i=15;i>=0;i--)
        {
                if(sign==true)
                {
        binary[15]=1; 
                }
                printf("%d",binary[i]);
        }            printf("\n");
        
for(i=0;i<15;i  )
if(binary[i]==1)
break;            if(sign==true)
        {
                for(i=i 1;i<16;i  )
                {
                        if(binary[i]==0)
                                binary[i]=1;
                        else
                                binary[i]=0;
                }
                 binary[15]=1; 
        }
        
printf("2S:");
        for(i=15;i>=0;i--)
        {
                printf("%d",binary[i]);
        }
return(0);
}
發表人 - miki-lion 於 2005/09/20 02:26:06

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-21 07:46:32 IP:203.203.xxx.xxx 未訂閱
1>不一定. 2>應該不行.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-21 09:05:38 IP:59.104.xxx.xxx 未訂閱
引言: 1.做轉換的數字一定要是10進制嗎?(想做16進制轉別的之類的) 2.另外轉成16進制的數值是小寫的,可以不經過其他的處理,直接改成大寫的嗎? [code]
1.題意不清。無法做答。 2.請查 printf 之用法。即可得到。
powmien
初階會員


發表:27
回覆:80
積分:41
註冊:2004-10-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-21 14:44:35 IP:60.248.xxx.xxx 未訂閱
A1: 什麼進制都能做出來阿,只是就我目前的能力而言,還是會把輸入進來的數值 轉成比較方便處理的進制數值(例:十進制)再做轉換。 A2: 同樓上二位前輩. 不過還是要看你的輸出結果的資料格式/形態為何, 如果單純是int、float...的value 就和array 的處理方式不同 如果是 array 的話.. 就能直接加上特定值變換為大寫也不需使 用function來轉換。 但是如果單純是int、float value的話就能直接用在printf() 用%x輸 出為16進制。 天下英雄出我輩,一入江湖歲月催; 皇圖霸業談笑中,不勝人生一場醉。 發表人 - powmien 於 2005/09/21 16:32:14
Miki-lion
中階會員


發表:90
回覆:180
積分:54
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-21 17:20:08 IP:220.141.xxx.xxx 未訂閱
我的意思是  
 fscanf(fp,"%d",&num);    cout<< "hex=" << hex << num <num);    假如num是16進制的數:5A    就可以直接轉換5A為10進制的90     
        
powmien
初階會員


發表:27
回覆:80
積分:41
註冊:2004-10-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-21 17:57:13 IP:60.248.xxx.xxx 未訂閱
引言: 我的意思是
 fscanf(fp,"%d",&num);    cout<< "hex=" << hex << num <num);    假如num是16進制的數:5A    就可以直接轉換5A為10進制的90
如果您的意思是...檔案裡面的內容為 5A
fscanf(fp,"%s",&num);
之後
cout<< "dec=" << num <
直接轉換成 90 (10進制) 這是做不到的,需要中間自已加一些演算法才能答到您的要求。 天下英雄出我輩,一入江湖歲月催; 皇圖霸業談笑中,不勝人生一場醉。 發表人 - powmien 於 2005/09/21 18:05:22
系統時間:2024-04-20 13:19:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!