先介紹何謂十六進位, 即 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 字母 .^_^.