便利eelife

   戻る

10進数を16進数2桁に変換
10進数で値を入力:



サンプルソース
<!--HTMLタグ </HEAD>の下に挿入してください。-->
<BODY>
<P>10進数を16進数2桁に変換</P>
<FORM name="myform" style="cursor : pointer;">
<TABLE>
<TBODY>
<TR>
<TD>10進数で値を入力:
<INPUT type="text" name="input" value="" size="12" title="0〜255の数値を入力して下さい。" >
<INPUT type="button" name="" value="16進数に変換" onclick="act16()">
<INPUT type="text" name="output" value="" size="16">
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</BODY>
Javascript <HEAD>と</HEAD>の間に挿入してください。
<SCRIPT language="JavaScript">
<!--10進数を16進数2桁に変換

function act16(){
n = myform.input.value;
str = cov16(n);
myform.output.value = str;
}

        // 10進数=>16進数転換関数
function cov16(n){
if (n == ""){
alert("データを入力して下さい。");
return "再入力!";
}
else {
for (var i=0; i < n.length; i++){
kensaku = n.charAt(i);
sin10 = "0123456789";
if (sin10.indexOf(kensaku,0) == -1){  // 入力文字列の検索
alert("0〜255の数値を入力して下さい。");//"0123456789"以外なら警告
return "再入力!";
}
}
{sin = "0123456789ABCDEF";
if(n>255){ alert("0〜255の数値を入力して下さい。");
return 'FF';}
if(n<0){ alert("0〜255の数値を入力して下さい。"); return '00';}//"0〜255"以外なら警告
else {return sin.charAt(Math.floor(n/16))+sin.charAt(n%16);}//16進数2桁を返す
}

}
}
// -->
</SCRIPT>
コメント
入力文字列の検索

16進数は 123456789abcdef の順に数えます。10進数に変えると
aは "10"、 b "11"、 c"12"、 d"13" 、e"14"、 f"15"、になります。
机上では CDは(12×16)+13=205、 21は(2×16)+1=33、4Dは(4×16)+13=77・・・・
で10進数を導きだします。
逆に205はMath.floor(n/16)で205/16の整数部分12をとりだしsin.charAt()で文字列sinの
12番目の文字"C"を得ます。
(n%16)で 205/16の剰余13をとりだしsin.charAt()で文字列sinの
13番目の文字"D"を得ます。
sin.charAt(Math.floor(n/16))+sin.charAt(n%16)で 10進数 "205 = CD"を取得します。


実際に使用する時はつぎの様にしてください。
str = cov16(n);  

function cov16(n){
var sin='0123456789ABCDEF';
return sin.charAt(Math.floor(n/16))+sin.charAt(n%16);
}