ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのparseInt()関数の16進数変換の詳細に注意_javascriptスキル

JavaScriptのparseInt()関数の16進数変換の詳細に注意_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 17:44:131372ブラウズ

parseInt(string, radix) には 2 つのパラメータがあります。最初の文字列は渡された値であり、2 番目の基数は渡された値の基数です。デフォルトは 10 です。さまざまな基数の数値は無視できます。 10 進整数に変換されます (整数でない場合は切り捨てられます)。

radix の値の範囲は 2 ~ 36 です。radix が 1 または radix>36 の場合、radix が 0 またはその他の値の場合、変換結果は NaN になります。 、基数のデフォルトは 10 です。

この関数では、最初のパラメータが文字列である必要があります。文字列でない場合は、変換前に文字列パラメータの左側が使用される文字セットに準拠します。基数変換では文字が切り捨てられます。
文字列パラメータの先頭と末尾のスペースは無視されます。

parseInt(param,radix) は parseInt(String(param).trim(),radix) と同等です
例: parseInt(010) // 8、処理プロセスは

コードをコピーします コードは次のとおりです:

010 --> 8 //0 から始まり、8 進数number
8 -- > '8'
parseInt('8') //基数を無視し、渡された最初のパラメータは 10 進数として認識されます

コードをコピーします コードは次のとおりです:

parseInt(0x10) // parseInt(16) は 10 進数の 16 を取得します
parseInt(010,16) // parseInt('8',16), get 8
parseInt(010,7) // parseInt('8',7), 8 は 16 進数で使用される文字の範囲を超えており、は破棄され、変換結果は NaN になります。
parseInt(0x10,8) // parseInt('16',8) は 14 個の文字を取得します。
parseInt(0x13,8) // parseInt('19',8) 文字9 は使用される 8 進数を超えます 文字の範囲は破棄され、変換結果は 1 になります

最初のパラメータが文字列に直接渡され、基数が無視される場合、次のようになります:
文字列は次で始まります0 で、デフォルトで 8 進数として認識されます (IE 9 では 10 進数として認識され、IE 6-8 では 8 進数として認識されます)
文字列は 0x で始まり、デフォルトでは 16 進数として認識されます
それ以外の場合は、10 進数として認識されます
コードをコピーします コードは次のとおりです:

parseInt('010') //8 ,ie9 は 10 を取得します
parseInt(' 018') //1,ie9 は 18 を取得します
parseInt('017') //15, ,ie9 は 15 を取得します
parseInt('010',8) // 8進数として直接認識され、変換結果は8
parseInt('010',7) //16進数として直接認識され、変換結果は7
parseInt('010',16) //16進数として直接認識、変換結果は 16
parseInt('0x10') //16
parseInt('0x1g') //1
parseInt('0x1f') //31
parseInt('0x10') ,8) // 8 桁の文字として直接認識されます。 16 進数の表現形式は正しく 16 進数として認識されます。 変換結果は parseInt('10',16) と同じで、16 parseInt('0x10',17) // 文字 x を 16 進数として認識します 16 進数で使用される文字の範囲を超えると、変換結果は 0 になります
parseInt(true) //NaN に注意してくださいNumber 関数でのブール型の使用法、Number(true) //1


特別な注意が必要
1/0 // Infinity
Infinity.toString() // 'Infinity '
ここでトリックです:



コードをコピー コードは次のとおりです: parseInt(1/0,18) // NaN
parseInt(1/0,19) // 18


文字 i は 16 進数に使用される文字セットに含まれるため、文字 n 以降の文字は破棄されます
parseInt(1/0,19) は実際には parseInt('i', 19) です
さらに、



コードをコピーします コードは次のとおりです: parseInt(NaN, 36) // 30191

文字 n なのでは 16 進数の 10 進数の 23 に相当し、a は 10 進数の 10 に相当します。したがって、実際には
23*36*36 10*36 23 = 30191
parseInt(1/0,36) // 1461559270678 となります。 parseInt('Infinity',36)
parseFloat には 16 進数のパラメーターがなく、10 進数のみを処理できます。
parseFloat.length //1
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。