序文コードを書くと、時々基数変換の問題に遭遇します。一般的な変換には、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; } 成し遂げるウェアハウスが構築された後、バイナリ変換を分解するプロセスを開始します。
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: まずは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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 5.0.96 for Windows x86 32 ビット グリーン簡易版インストール チュートリアル
>>: MYSQL updatexml() 関数のエラーインジェクション分析
フォーム内の読み取り専用および無効な属性1. 読み取り専用:サーバーは、ユーザーがデータを変更するこ...
序文この記事では、mysqld プロセスをシャットダウンするプロセスと、MySQL インスタンスを安...
仕事を探しています!!!事前準備:まず、このアニメーションは、以前のローディングアニメーションとクー...
{ {}} 値を取得すると、タグの元のコンテンツはクリアされませんv-textは値を取得し、タグの元...
目次問題の原因:解決:解決:私は Centos7 を使用しています (理論的にはこの方法は Cent...
この記事では、例を使用して、MySQL イベントの変更 (ALTER EVENT)、イベントの無効化...
現在、WeChatパブリックアカウントの運用活動が多く、写真を生成する必要があります。生成された写真...
手順: 1. MySQLデータベースをインストールする1. MySQL-5.6.17-winx64....
この記事では、Linux システム コマンドについて説明します。ご参考までに、詳細は以下の通りです。...
目次Dockerを使用してMySQLサービスをデプロイする方法DockerでRedisサービスをデプ...
目次背景:必要:効果1. アイデア2. 実装1. ページとスタイル2. 初期化3. クリックすると4...
豊富なオプションを備えた強力なエディターとして、Vim は多くのユーザーに愛されています。この記事で...
数字、文字、またはランダムな色の数字と文字の混合で構成される n 桁の確認コード。以下に完全なコード...
XMLファイルは、可能な限りutf-8でエンコードする必要があります。gb2312には、?など、保存...
Nginx を設定する 3 つの方法最初の方法は、位置一致部分を直接置き換える。 2 番目の pro...