JSは10進数を16進数に変換するサンプルコードを実装します

JSは10進数を16進数に変換するサンプルコードを実装します

序文

コードを書くと、時々基数変換の問題に遭遇します。一般的な変換には、2進数、8進数、10進数、16進数などがありますが、16進数はあまり聞きません。ここでは、JSを使用して簡単に16進数を実装してみます。

考える

16進数の構造

始める前に、まず 16 進数の構成を理解して、16 進数とそれに続く数値の変換を明確に理解する必要があります。 16 進数は 0 から 9 と a から a までの文字で構成されていることは誰もが知っています。では、16 進数とは何でしょうか? 、afを20桁後ろに押し戻すと、その文字部分は26の英語の文字azで構成されていることが明らかなので、16進数は0-9、azで構成されています。

数値準備

構成を理解した後、10 進数を 16 進数に変換するにはどうすればよいかを考えてみましょう。 まず、36 個の値を持つ「倉庫」配列を準備する必要があります。この配列は、16 進数のすべての値を格納するために使用されます。10 進数を変換する必要がある場合、値に応じて 16 進数の値が倉庫から取り出されます。倉庫では、0-9 は 16 進数の 0-9 を表し、10-35 は 16 進数の a-z を表します。コードは次のとおりです

関数 getNums36() {
  var nums36 = [];
  (var i = 0; i < 36; i++) {
    if(i >= 0 && i <= 9) { // 0~9の値を保存する nums36.push(i) 
    } else { // az の値を格納 nums36.push(String.fromCharCode(i + 87)); // ASCII コード変換 }
  }
  console.log(nums36,'--------'); // 倉庫の値を確認します return nums36; 
}

成し遂げる

ウェアハウスが構築された後、バイナリ変換を分解するプロセスを開始します。

  • まず渡された 10 進数がテストされ、浮動小数点数が最初に判定されます。浮動小数点数の基数変換についてはここでは説明しないので、そのまま返されます。次に、負の数を検出して処理します。n が負の数の場合、Math.abs() メソッドが呼び出され、n が正の数に変換されます。
  • 検出が完了すると、変換が開始されます

while ループを設定します。まず、n の値に対して 36 を法として実行し、res を取得します。

var res = n % 36;

ここでは、10 進数の最下位ビット値を 16 進数に変換し、res をウェアハウスに投入し、対応する 16 進数値を取得し、unshift を使用してそれを arr の最初のビットに格納する必要があります。

arr.unshift(nums36[res]);

最下位ビットを処理した後、数値を繰り上げて上位ビットの値を処理する必要があります。

n = parseInt(n/36);

この時点でサイクルは完了する

while を使って、res の n に対する係数を連続的に取得し、それを連続的に繰り上げます。最後に、10 進数を 16 進数に変換できます。

このとき、最初に設定したnegの負数判定を追加することを忘れないように注意する

arr.unshift(負)

最後に16進数を返す

arr.join(""); を返します。

コード

// 36ビット式0-9azを提供
関数 getNums36() {
  var nums36 = [];
  (var i = 0; i < 36; i++) {
    i >= 0 && i <= 9 の場合
      nums36.push(i)
    } それ以外 {
      nums36.push(String.fromCharCode(i + 87));
    }
  }
  nums36 を返します。
}
関数scale36(n) {
  // 単一関数 // 16進数: 0-9 af 16進数: 0-9 az   
  定数arr = [];
  var nums36 = getNums36();
  // 36 10
  if(!Number.isInteger(n)){//浮動小数点数の判定、現在マウスをサポートしていません console.warn('10進数変換はサポートされていません');
    n を返します。
  } 
  var neg = '';
  if(n < 0){//負の数の処理 neg = '-';
      n = Math.abs(n)
  }
  while(n) {
    var res = n % 36;
    console.log(res,'++++++++');
    arr.unshift(nums36[res]);
    // キャリー n = parseInt(n/36);
    console.log(n,'---------');
  }
  arr.unshift(負)
  arr.join(""); を返します。

}

コンソール.log(スケール36(20)); // 10

拡張機能

7進数の実装

このテンプレートは、10進数を他の基数に変換する場合にも適用できます。ウェアハウスの値を変更するだけで済みます。ここでは、LeetCodeの7基数問題を例に挙げます。

504. 7 進数 整数を 7 進数に変換し、文字列として出力します。

例1:
入力: 100 出力: "202"

まずは7基の数値倉庫を準備する

関数 getNums7() {
  var nums7 = [];
  (変数i = 0; i < 7; i++){
    
      nums7.push(i)
   
  }
  nums7 を返します。
}

次に、剰余値と繰り上がりを変更してテンプレートの再利用を完了します。

var res = n % 7;
n = parseInt(n/7);

コード関数 getNums7() {
  var nums7 = [];
  (変数i = 0; i < 7; i++){
    
      nums7.push(i)
   
  }
  nums7 を返します。
}
var convertToBase7 = 関数(数値) {
  // 単一関数 const arr = [];
  var nums7 = getNums7();
  var neg = '';
  if(num < 0){//負の数の処理 neg = '-';
      数値 = Math.abs(数値)
  }
  数値 == 0 の場合
      num + "" を返します。
  }
  
  while(数値) {
    var res = num % 7; // 上位データをインターセプトする arr.unshift(nums7[res]);  
    // キャリー num = parseInt(num/7); 
  }
  arr.unshift(負の値);
  arr.join(""); を返します。

}

まとめ

この例から、少し変更するだけで、10 進法を他のシステムに簡単に変換できることがわかります。鍵となるのは、res の法とウェアハウス値の構築です。連続してキャリーと while ループを実行すると、最終的に必要な数値を取得できます。

10 進数から 16 進数への変換を JS で実装する方法についての記事はこれで終わりです。10 進数から 16 進数への変換を JS で実装する方法についてさらに詳しく知りたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 16進数と10進数の変換関数のPHP実装例

<<:  MySQL 5.0.96 for Windows x86 32 ビット グリーン簡易版インストール チュートリアル

>>:  MYSQL updatexml() 関数のエラーインジェクション分析

推薦する

ミニプログラムは、カスタムのマルチレベル単一選択と複数選択を実装します

この記事では、参考のために、ミニプログラムでカスタムのマルチレベル単一選択および複数選択機能を実装す...

Vue ルーティング遅延読み込みの詳細

目次1. ルートの遅延読み込みとは何ですか? 2. ルートの遅延読み込みの使用1. ルートの遅延読み...

ページにデータを表示するReactメソッド

目次親コンポーネントリストボックスリストコンポーネントボタンコンポーネント PageButton昨年...

Linux での NVIDIA GPU 使用状況の監視の詳細な説明

TensorFlow をディープラーニングに使うとビデオメモリ不足がよく起こるので、GPU 使用状況...

MySQL 空間データストレージと関数

目次1. データ型1. MySQL空間データとは何か2. GeoJSONとは3. 空間データ型のフォ...

将来人気が出るであろういくつかのナビゲーション方向

<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...

Ubuntu 16.04にJenkinsをインストールするための詳細な手順

1. 前提条件JDKがインストールされましたecho $PATHソフトリンクを作成し、JDKのインス...

zk+kafka+storm クラスターの docker-compose デプロイメントの実装

クラスターの展開の概要172.22.12.20 172.22.12.21 172.22.12.22 ...

IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴

私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリア...

Linux の運用と保守で netstat の代わりに ss コマンドを使用する方法

序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...

Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...

MySQL デュアルマシン ホットスタンバイ実装ソリューション [テスト可能]

目次1. コンセプト2. 環境の説明3. マスタースレーブホットスタンバイ実装1. コンセプト1. ...

MySQL 5.7.17 のインストールと設定のグラフィックチュートリアル

MySQL の機能: MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレー...

Google Web Fonts でウェブサイトに無制限のフォントを追加

長い間、リソースの制約により、使用できるフォントが限られていたため、Web サイトの開発は妨げられて...

Linux ifconfig コマンドの使用

1. コマンドの紹介ifconfig (ネットワーク インターフェイスを構成する) コマンドは、ネッ...