現在の位置: ホーム> 最新記事一覧> JavaScriptのHexDecとParseintの違いは何ですか?

JavaScriptのHexDecとParseintの違いは何ですか?

gitbox 2025-05-29

16進列弦を小桁整数に変換する過程で、PHPとJavaScriptは、PHPのHexDec()とJavaScriptのParseint()を独自の標準機能を提供します。それらの基本的な機能は類似していますが、特定の実装と境界行動にはいくつかの顕著な違いがあります。これらは、この記事で詳細に比較および説明されます。

1。基本的な使用法の比較

PHPのHexDec関数

hexdec()は、16進ストリングを10進整数に変換するために使用され、その構文は非常に単純です。

 <?php
echo hexdec("1A"); // 出力 26
?>

この関数への入力は、合法的な16進列文字列( 0xプレフィックスを含めることができます)であり、範囲外の場合は整数または浮動小数点数です。

JavaScriptのparseint関数

JavaScriptのparseint()はより一般的で、任意の文字列を解析でき、構文は次のとおりです。

 console.log(parseInt("1A", 16)); // 出力 26

2番目のパラメーターを明示的に指定する必要があります。これは16進文字列であることを示します。 RADIXが指定されていない場合、 ParseIntは文字列形式(エラーを引き起こす可能性がある)に基づいてバイナリを自動的に決定しようとします。

2。違法なキャラクターの違いを処理します

違法なキャラクターに遭遇したときに、これら2つの機能の処理挙動に大きな違いがあります。

PHPのHexdec

 <?php
echo hexdec("1A*F"); // 出力 26
?>

PHPのhexdec()は、文字列の先頭から解析します。違法なキャラクター( *など)に遭遇すると、処理が停止しますが、エラーは報告されませんが、これまでに解析された値を返します。

JavaScriptのparseint

 console.log(parseInt("1A*F", 16)); // 出力 26

JavaScriptはPHPと同様に動作し、最初の違法なキャラクターに遭遇したときに停止し、以前に正常に解析された部分を返します。

この点で2つは一貫して動作し、例外を投げませんが、PHPは次のよ​​うなエラーに対してわずかに高い耐性を持っています。

 <?php
echo hexdec("GHI"); // 出力 0
?>

そしてJavaScriptで:

 console.log(parseInt("GHI", 16)); // 出力 NaN

PHPは0を返しますが、JavaScriptはNANを返し、論理的判断の違いにつながる可能性があります。

3。ケース感度

PHPとJavaScriptの両方が、16進数文字を扱う場合、ケース非感受性です。

 <?php
echo hexdec("1a"); // 出力 26
?>
 console.log(parseInt("1a", 16)); // 出力 26

これは、言語間で開発するときに一貫性を提供し、追加の変換を必要としません。

4.数値範囲とオーバーフロー処理

非常に大きな16進列の文字列を渡すと、2つの言語はそれを異なって処理します。

PHPで:

 <?php
echo hexdec("FFFFFFFFFFFFFFFF"); // 出力 1.84467440737096E+19(フローティングポイント番号)
?>

JavaScript:

 console.log(parseInt("FFFFFFFFFFFFFFFF", 16)); // 出力 18446744073709552000(Number,精度は損失になる場合があります)

JavaScriptのparseintの結果はまだ数値タイプ(二重精度の浮動小数点数)ですが、値が非常に大きい場合、精度損失の問題に直面します。 PHPは、整数範囲外にあるときにフロートに自動的に変換されますが、これも不正確である可能性がありますが、動作は予想されます。

5。空の文字列と非数字の文字列の処理

<?php
echo hexdec(""); // 出力 0
echo hexdec("xyz"); // 出力 0
?>
 console.log(parseInt("", 16)); // 出力 NaN
console.log(parseInt("xyz", 16)); // 出力 NaN

これはPHPとJavaScriptの大きな違いでもあります。PHPはより寛容であり、空の文字列も0と見なされますが、JavaScriptはより厳しく、 NANを返します。

6。URLパラメーターのアプリケーションシナリオ

16進数が色またはハッシュパラメーターを表すいくつかのシナリオでは、次のURL例など、これらのパラメーターを処理のために整数に解析する必要がある場合があります。

 <?php
$hex = $_GET['value'] ?? '1F';
$decimal = hexdec($hex);
echo "Decimal value: $decimal";
?>

URLの場合:

 https://gitbox.net/color.php?value=FF

JavaScriptの同様の処理方法は次のとおりです。

 const urlParams = new URLSearchParams(window.location.search);
const hex = urlParams.get('value') || "1F";
const decimal = parseInt(hex, 16);
console.log("Decimal value:", decimal);

7。概要

特性PHP Hexdec JS Parseint
違法な文字処理解析値の一部を返します部分的に解析された値またはnanを返します
空の文字列処理0に戻りますナンに戻ります
精度と範囲多数をサポートしますが、フロートに変換します精度が失われる場合があります
症例感度鈍感鈍感
指定されたバイナリが必要ですいいえはい(推奨)

HexDecParseintはどちらも、ヘックスの基本的なタスクを小数に記入できますが、境界入力、型互換性、およびエラー許容度の処理には違いがあります。これらの違いを理解することは、言語間システムの開発、ユーザー入力の処理、およびデバッグデータの開発に重要です。