WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:16進数を10進数にする

あつ [MAIL] [WriteDate : Wed Jun 6 18:12:45 2001]

質問させていただきます。
16進数を10進数にするというscriptを組んでいるんですが、
うまくいきません。

<script language="JavaScript">
<!--
function Arrey(n){ this.Length=n; }  // 配列宣言で使用する関数を定義
var col=new Arrey( 2 );              // ここで配列を宣言

function run(){
    if(document.f0.red_h.value != ""){
        inp=document.f0.red_h.value;
        for(i=1;i<=2;i++){
            col[i]=convert( inp.substring(i-1,i) );
        }
        document.f0.red_s.value  = col[1]*16+col[2];
    } else
    if(document.f0.green_h.value != ""){
        inp=document.f0.green_h.value;
        for(i=1;i<=2;i++){
            col[i]=convert( inp.substring(i-1,i) );
        }
        document.f0.green_s.value  = col[1]*16+col[2];
    } else
    if(document.f0.blue_h.value != ""){
        inp=document.f0.blue_h.value;
        for(i=1;i<=2;i++){
            col[i]=convert( inp.substring(i-1,i) );
        }
        document.f0.blue_s.value = col[1]*16+col[2];
    }
}

function convert( n16 ){      // 1桁の16進数を10進数数値にする関数です。
  if (n16=="0"){ n10= 0 ;}
  if (n16=="1"){ n10= 1 ;}
  if (n16=="2"){ n10= 2 ;}
  if (n16=="3"){ n10= 3 ;}
  if (n16=="4"){ n10= 4 ;}
  if (n16=="5"){ n10= 5 ;}
  if (n16=="6"){ n10= 6 ;}
  if (n16=="7"){ n10= 7 ;}
  if (n16=="8"){ n10= 8 ;}
  if (n16=="9"){ n10= 9 ;}
  if (n16=="a" || n16=="A" ){ n10= 10 ;}
  if (n16=="b" || n16=="B" ){ n10= 11 ;}
  if (n16=="c" || n16=="C" ){ n10= 12 ;}
  if (n16=="d" || n16=="D" ){ n10= 13 ;}
  if (n16=="e" || n16=="E" ){ n10= 14 ;}
  if (n16=="f" || n16=="F" ){ n10= 15 ;}
  return n10;
  }
//-->
</script>


<form name="f0">
<h2>16進数</h2>
 <p>赤<input type="text" name="red_h" size=9>
 <p>緑<input type="text" name="green_h" size=9>
  <p>青<input type="text" name="blue_h" size=9>
 <input type="button" name="ok" value=" 10進数に変換 " onClick="run()">
<hr>
<h2>10進数</h2>
 <p>赤<input type="text" name="red_s"   size=9>
 <p>緑<input type="text" name="green_s" size=9>
 <p>青<input type="text" name="blue_s"  size=9>
</FORM>


なんですが、僕の頭の理論上ではうまくいくはずなんですが、
どこがダメなんでしょう?


andi [WriteDate : Wed Jun 6 18:32:30 2001]

num = 0xF;
num.toString();

で16進数を10進数に変換できますが・・・


R.M [WriteDate : Wed Jun 6 18:38:12 2001]

"else" が2ヶ所変なところに入っています

ちなみに、簡単に変換するには以下のように行うと良いかもしれません
function run(){
 document.f0.red_s.value = parseInt("0x"+document.f0.red_h.value);
 document.f0.green_s.value = parseInt("0x"+document.f0.green_h.value);
 document.f0.blue_s.value = parseInt("0x"+document.f0.blue_h.value);
}


R.M [WriteDate : Wed Jun 6 18:38:12 2001]

"else" が2ヶ所変なところに入っています

ちなみに、簡単に変換するには以下のように行うと良いかもしれません
function run(){
 document.f0.red_s.value = parseInt("0x"+document.f0.red_h.value);
 document.f0.green_s.value = parseInt("0x"+document.f0.green_h.value);
 document.f0.blue_s.value = parseInt("0x"+document.f0.blue_h.value);
}


あつ [MAIL] [WriteDate : Wed Jun 6 18:44:13 2001]

andiさんありがとうございます。

num.toString(16)が16進数に、ということはわかるのですが、
0xFというのがよくわかりません。

もう少し詳しく教えてください。


あつ [MAIL] [WriteDate : Wed Jun 6 18:52:29 2001]

andiさんありがとうございます。

num.toString(16)が16進数に、ということはわかるのですが、
0xFというのがよくわかりません。

もう少し詳しく教えてください。


あつ [MAIL] [WriteDate : Wed Jun 6 18:53:05 2001]

andiさんありがとうございます。

num.toString(16)が16進数に、ということはわかるのですが、
0xFというのがよくわかりません。

もう少し詳しく教えてください。


あつ [WriteDate : Wed Jun 6 18:54:26 2001]

すいません。
再読み込みすると、前のが載ってしまって、3連投稿になってしまいました・・・。


あつ [MAIL] [WriteDate : Wed Jun 6 18:57:23 2001]

R.Mさんありがとうございました。
かなりすっきりとしたスクリプトですね。
あとは、やっぱり「0x」っていうのがわかんないです。
16進数とかでなんとなく見かけはするのですが、
どこかに詳しいサイトがあれば教えていただけないでしょうか?


andi [WriteDate : Wed Jun 6 18:59:30 2001]

http://tohoho.wakusei.ne.jp/js/value.htm#Number

が参考になると思いますよ。
0xが数値の前に付くと、その数値が16進数であることを表します。


あつ [MAIL] [WriteDate : Wed Jun 6 19:27:13 2001]

andiさん、R.Mさんありがとうございます。

おかげで、いけそうです。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World