2012-02-28

Android 小程式 : 十進位數轉成十六進位

這次我用 Android 模擬器寫了一個 10 進位轉換成 16 進位的小程式.
先介紹何謂十六進位, 即 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
十進位數值從 10 到 15 的數值相對於十六進位的 A ~ F
A = 10; B = 11;  C = 12; D = 13; E = 14; F = 15

運作原理 :
將輸入的十進位數值在迴圈中反覆進行除以 16 的動作, 並取其餘數放入字串陣列 ba [] 中, 最後再將陣列中的元素倒置過來顯示就可得到答案囉 ! 


5629 轉成十六進位得出 15FD
 

65535 轉成十六進位得出 FFFF
搞程式設計的人對 65535 應該很熟才對 ^_^


程式碼如下 :

import ... (此處略)

public class BtoD extends Activity {
    /** Called when the activity is first created. */
    int num,i;
    String[] ba = new String[64];
    String su;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final EditText editText1 = (EditText)findViewById(R.id.editText1);
        final TextView textView3 = (TextView)findViewById(R.id.textView3);
        final Button button1= (Button)findViewById(R.id.button1);
       
        button1.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                i = 0;  su = "";
                num = Integer.parseInt(editText1.getText().toString());
               
                while ( num > 15 )
                {
                    int temp = num % 16;
                    checkNum(temp);
                    i++;
                    num = num / 16;
                }
               
                checkNum(num);
               
                for ( int j = i; j >= 0; j-- )
                    su += ba[j];
                textView3.setText(su);
            }
        });
    }
   
    // 此函式檢查 10 ~ 15 所對應的 16 進位表示法
    private void checkNum(int cn) {
        if ( cn > 9 )
        {
            if (cn == 10) ba[i] = "A";
            else if (cn == 11) ba[i] = "B";
            else if (cn == 12) ba[i] = "C";
            else if (cn == 13) ba[i] = "D";
            else if (cn == 14) ba[i] = "E";
            else if (cn == 15) ba[i] = "F";
        }   
        else
            ba[i] = String.valueOf(cn);
    }
}

我在程式中設置了一個 checkNum() 函式, 用來判斷十進位數值 10 ~ 15 所對應的 A ~ F 字母 .^_^.

Android 小程式 : 十進位數轉成二進位

我用 Android 模擬器做了一個 10 進位數值轉換成 2 進位的小程式 :


運作原理 :
程式中, 我將輸入的 10 進位數值以迴圈方式不斷用 2 去除, 每除一次所得的餘數 (為 0 或 1) 依序存入陣列中, 最後再用迴圈把陣列內容以倒置的方式取出, 便可得出答案.

程式碼如下 :

package a.b.c;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class BtoD extends Activity {
    /** Called when the activity is first created. */
    int s,i;
    int[] ba = new int[64];
    String su;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final EditText editText1 = (EditText)findViewById(R.id.editText1);
        final TextView textView3 = (TextView)findViewById(R.id.textView3);
        final Button button1= (Button)findViewById(R.id.button1);
       
        button1.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                i = 0;  su = "";
                s = Integer.parseInt(editText1.getText().toString());
               
                while (s > 1)
                {
                    ba[i] = s % 2;
                    i++ ;
                    s = s/2;
                }
               
                if(s==1 || s==0)
                    ba[i] = s;
                
                for(int j=i;j>=0;j--)
                    su += String.valueOf(ba[j]);
                textView3.setText(su);
            }
        });
    }
}

整個程式功能過於簡單 ~ 若上傳到 Android Market 會 ... 被笑啊 ! 我只把它當做練習而已 .^_^.

搜尋此網誌