【JavaScript】10進数・16進数変換

【JavaScript】10進数・16進数変換

はじめに

JavaScriptでは、数値の基数(進数)を簡単に変換することができます。特に10進数(decimal)と16進数(hexadecimal)の相互変換はよく使用されます。この記事では、JavaScriptで10進数を16進数に変換する方法、逆に16進数を10進数に変換する方法、エラーハンドリング、実用例まで詳しく解説します。

10進数から16進数への変換

JavaScriptで10進数を16進数に変換するには、toString(16) を使います。

基本的な例


let decimalNumber = 255;
let hexString = decimalNumber.toString(16);
console.log(hexString); // "ff"

ゼロ埋め(0埋め)をする場合

16進数の表記で2桁以上を保証したい場合、padStart() を使います。


let decimalNumber = 5;
let hexString = decimalNumber.toString(16).padStart(2, '0');
console.log(hexString); // "05"

16進数から10進数への変換

JavaScriptで16進数を10進数に変換するには、parseInt(文字列, 基数) を使います。

基本的な例


let hexString = "ff";
let decimalNumber = parseInt(hexString, 16);
console.log(decimalNumber); // 255

「0x」付きの16進数を変換

JavaScriptでは、数値を「0x」で始めると16進数とみなされます。


let decimalNumber = 0xff;
console.log(decimalNumber); // 255

大文字と小文字の違い

JavaScriptでは、16進数のアルファベット部分(A~F)は大文字・小文字のどちらでも使用可能です。

小文字での変換


let decimalNumber = 255;
let hexString = decimalNumber.toString(16);
console.log(hexString); // "ff"

大文字での変換


let decimalNumber = 255;
let hexString = decimalNumber.toString(16).toUpperCase();
console.log(hexString); // "FF"

エラーハンドリング

変換時に無効な値が渡された場合、NaN(Not a Number)が返されることがあります。

無効な文字列を変換しようとした場合


let invalidHex = "G1"; // Gは16進数に存在しない
let decimalNumber = parseInt(invalidHex, 16);
console.log(decimalNumber); // NaN

エラーを防ぐ方法

isNaN() を使って、NaN かどうかを確認できます。


let input = "G1";
let decimalNumber = parseInt(input, 16);
if (isNaN(decimalNumber)) {
    console.log("無効な16進数です");
} else {
    console.log(decimalNumber);
}

応用例

RGBカラーの変換

RGBカラーを16進数表記に変換する例です。


function rgbToHex(r, g, b) {
    return "#" + 
        r.toString(16).padStart(2, '0') +
        g.toString(16).padStart(2, '0') +
        b.toString(16).padStart(2, '0');
}

console.log(rgbToHex(255, 99, 71)); // "#ff6347"

16進数のRGBを10進数に変換


function hexToRgb(hex) {
    let r = parseInt(hex.substring(1, 3), 16);
    let g = parseInt(hex.substring(3, 5), 16);
    let b = parseInt(hex.substring(5, 7), 16);
    return {r, g, b};
}

console.log(hexToRgb("#ff6347")); // {r: 255, g: 99, b: 71}

数値を16進数で出力するデバッグ用関数


function debugHex(value) {
    console.log("0x" + value.toString(16).toUpperCase());
}

debugHex(255); // "0xFF"

まとめ

  • JavaScriptでは toString(16) で10進数を16進数に変換できる
  • parseInt(文字列, 16) で16進数を10進数に変換できる
  • 大文字・小文字は区別しないが、大文字にしたい場合は toUpperCase() を使う
  • 無効な入力には isNaN() を使ってエラーチェックできる
  • RGB変換など、実用的なシナリオでも活用できる

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です