7

JavaScript の 8 進数と 16 進数の計算を理解しようとしています。parseInt(string, radix)整数値を取得するために使用できることを知っています。

たとえば、これを試してみると、値が異なるのはなぜですか?

var octal = parseInt('026', 8); 
var octal1 = parseInt('030', 8); 
alert(octal); //22
alert(octal1); //24    

var hex = parseInt('0xf5', 16); 
var hex1 = parseInt('0xf8', 16); 
alert(hex); //245
alert(hex1); //248

しかし、それを配列に保存しようとすると、なぜ答えが異なり、間違っているのでしょうか?

var x = new Array(026, 5, 0xf5, "abc");
var y = new Array(030, 3, 0xf8, "def");

alert('026 is ' + parseInt(x[0],8)); //18
alert('0xf5 is ' + parseInt(x[2],16)); //581
alert('030 is ' + parseInt(y[0],8)); //20
alert('0xf8 is ' + parseInt(y[2],16)); //584
4

3 に答える 3

6

parseInt引数を解析する前に文字列に変換します。

  1. inputString を ToString(string) にする

そう:

0x35.toString() // "53"
parseInt( "53", 16 ); //83
parseInt( 0x35, 16 ); //83

配列にあるものはほとんどがすでに数値であるため、それらを解析する必要はありません。それらを文字列に変更すると、期待される結果が得られます。

var x = new Array("026", "5", "0xf5", "abc");
var y = new Array("030", "3", "0xf8", "def");
于 2012-02-23T19:39:50.927 に答える
3

数値をある基数から別の基数に変換できる関数を作成しました。開始基数と新しい基数はパラメーターとして指定されます。

function convertFromBaseToBase(str, fromBase, toBase){
    var num = parseInt(str, fromBase);
    return num.toString(toBase);
}

alert(convertFromBaseToBase(10, 2, 10));

http://jsfiddle.net/jarble/p9ZLa/

于 2013-04-01T03:16:44.423 に答える
0

0xf5文字列の外側にあるの整数245です。解析する必要がある文字列ではありません。

console.log( "0xf5" );              //-> 0xf5
console.log( parseInt("0xf5",16) ); //-> 245
console.log( 0xf5 );                //-> 245
console.log( parseInt(0xf5,16)  );  //-> 581
console.log( parseInt("245",16) );  //-> 581
console.log( parseInt(245,16)   );  //-> 581

同様に026、文字列の外側は整数22です:

console.log( 026 );                 //-> 22

あなたがしているのは、すでに base10 に変換された整数を に渡しparseInt()、次にそれらを文字列に変換し、base10 を base16 として解釈し、2 回目の base 変換を実行することです。

于 2012-02-23T19:45:46.700 に答える