VorwortBeim Schreiben von Code stoßen wir gelegentlich auf das Problem der Basiskonvertierung. Übliche Konvertierungen sind binär, oktal, dezimal und hexadezimal, aber hexadezimal ist selten anzutreffen. Hier verwenden wir JS, um einfach zu versuchen, hexadezimal zu implementieren. denken Die Struktur von HexadezimalzahlenBevor wir beginnen, müssen wir zunächst die Zusammensetzung von Hexadezimalzahlen verstehen, damit wir ein klares Verständnis von Hexadezimalzahlen und der anschließenden Konvertierung von Zahlen haben. Wir alle wissen, dass Hexadezimalzahlen aus den Zeichen 0 bis 9 und a bis a bestehen. Wie ist es also mit Hexadezimalzahlen? , schieben Sie af um 20 Stellen zurück, und es ist offensichtlich, dass sein Buchstabenteil aus 26 englischen Buchstaben az besteht, also besteht die Hexadezimalzahl aus 0-9, az Numerische VorbereitungNachdem Sie die Zusammensetzung verstanden haben, überlegen Sie, wie eine Dezimalzahl in eine Hexadezimalzahl umgewandelt werden kann. Wir müssen zunächst ein „Warehouse“-Array mit 36 Werten vorbereiten. Dieses Array wird verwendet, um alle Werte von Hexadezimalzahlen zu speichern. Wenn eine Dezimalzahl konvertiert werden muss, wird der Wert der Hexadezimalzahl entsprechend dem Wert aus dem Warehouse entnommen. Im Warehouse stellt 0-9 0-9 der Hexadezimalzahl dar und 10-35 stellt az der Hexadezimalzahl dar. Der Code lautet wie folgt Funktion getNums36() { var nums36 = []; für(var i = 0; i < 36 ; i++) { if(i >= 0 && i <= 9) { // Speichere die Werte 0-9 nums36.push(i) } else { // Speichere den Wert von az nums36.push(String.fromCharCode(i + 87)); // ASCII-Code-Konvertierung } } console.log(nums36,'--------'); //Überprüfen Sie den Wert des Warehouse return nums36; } erreichenNachdem das Lager erstellt ist, beginnen wir mit dem Zerlegungsprozess der Binärkonvertierung.
Richten Sie eine While-Schleife ein. Führen Sie zunächst Modulo 36 für den Wert von n aus, um res zu erhalten. var res = n % 36; Hier müssen wir den niedrigsten Bitwert der Dezimalzahl in eine Hexadezimalzahl umwandeln, res in das Lager werfen, den entsprechenden Hexadezimalwert abrufen und ihn mit unshift im ersten Bit von arr speichern. arr.unshift(nums36[res]); Nachdem wir das niedrigste Bit verarbeitet haben, müssen wir die Zahl übertragen und den Wert des höheren Bits verarbeiten. n = parseInt(n/36); An diesem Punkt ist ein Zyklus abgeschlossen Wir verwenden while, um den Modul von res kontinuierlich auf n zu nehmen und kontinuierlich zu übertragen. Schließlich können wir die Dezimalzahl in eine Hexadezimalzahl umwandeln. Beachten Sie, dass Sie zu diesem Zeitpunkt daran denken müssen, das negative Zahlenurteil des zuvor festgelegten Neg an erster Stelle hinzuzufügen arr.unshift(neg) Geben Sie abschließend die Hexadezimalzahl zurück arr.join(""); Code // 36-Bit-Ausdruck 0-9 az bereitstellen Funktion getNums36() { var nums36 = []; für(var i = 0; i < 36 ; i++) { wenn(i >= 0 und i <= 9) { nums36.push(i) } anders { nums36.push(String.fromCharCode(i + 87)); } } gebe Nums36 zurück; } Funktion scale36(n) { // Einzelne Funktion // Hexadezimalzahl: 0-9 af Hexadezimalzahl: 0-9 az const arr = []; var nums36 = getNums36(); // 36 10 if(!Number.isInteger(n)){//Beurteilung von Gleitkommazahlen, wird derzeit von Mäusen nicht unterstützt console.warn('Dezimalkonvertierung wird nicht unterstützt'); Rückkehr n; } var neg = ''; if(n < 0){//Verarbeitung negativer Zahlen neg = '-'; n = Math.abs(n) } während(n) { var res = n % 36; Konsole.log(res,'++++++++'); arr.unshift(nums36[res]); // Übertrag n = parseInt(n/36); Konsole.log(n,'---------'); } arr.unshift(neg) arr.join(""); } console.log(scale36(20)); // 10 Erweiterungen Implementierung von 7-BasiszahlenDiese Vorlage ist auch für die Konvertierung von Dezimalzahlen in andere Basen anwendbar. Wir müssen nur den Wert des Lagers ändern. Hier nehmen wir ein 7-Basen-Problem von LeetCode als Beispiel 504. Basis 7: Konvertieren Sie eine gegebene Ganzzahl in die Basis 7 und geben Sie sie als Zeichenfolge aus. Beispiel 1: Bereiten Sie zunächst das 7-Basis-Zahlenlager vor Funktion getNums7() { var nums7 = []; für(var i = 0; i < 7 ; i++) { nums7.push(i) } gebe Nums7 zurück; } Ändern Sie dann den Restwert und den Übertrag, um die Wiederverwendung der Vorlage abzuschließen. var res = n % 7; n = parseInt(n/7); Code-Funktion getNums7() { var nums7 = []; für(var i = 0; i < 7 ; i++) { nums7.push(i) } gebe Nums7 zurück; } var convertToBase7 = Funktion(Zahl) { // Einzelne Funktion const arr = []; var nums7 = getNums7(); var neg = ''; if(num < 0){//Verarbeitung negativer Zahlen neg = '-'; Zahl = Math.abs(Zahl) } wenn(Zahl == 0) { gibt Num + "" zurück; } während(Zahl) { var res = num % 7; // die höherwertigen Daten abfangen arr.unshift(nums7[res]); // Übertrag num = parseInt(num/7); } arr.unshift(neg); arr.join(""); } ZusammenfassungAnhand dieses Beispiels können wir erkennen, dass wir mit ein paar kleinen Änderungen das Dezimalsystem problemlos in andere Systeme umwandeln können. Der Schlüssel liegt im Modulo von res und der Konstruktion des Warehouse-Werts. Durch kontinuierliches Übertragen und While-Schleifen erhalten wir schließlich die gewünschte Zahl. Dies ist das Ende dieses Artikels über die Implementierung der Konvertierung von Dezimalzahlen in Hexadezimalzahlen in JS. Weitere relevante Inhalte zur Implementierung der Konvertierung von Dezimalzahlen in Hexadezimalzahlen in JS finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: MySQL 5.0.96 für Windows x86 32-Bit Green - vereinfachte Version - Installations-Tutorial
Inhaltsverzeichnis 1. Voranalyse 1. Vorabanalyse ...
Kürzlich sagten einige Freunde, dass sie nach der...
In diesem Artikel werden die pessimistische und d...
Heute ist mein Kollege beim Schreiben von MySQL-A...
In diesem Artikel wird der spezifische Code von R...
Inhaltsverzeichnis Rekursive Vue-Komponente Drag-...
Hintergrund Um die Docker-Containerisierung währe...
Nginx-Server nginx ist ein ausgezeichneter Webser...
In HTML kann die chinesische Phrase „學好好學“ als „學...
Verwenden Sie navicat zum Testen und Lernen: Verw...
Ich werde in diesen zwei Tagen Java wiederholen, ...
Eine Umgebung Installieren Sie VMware Tools auf C...
Mithilfe von Nginx-Protokollen lassen sich Benutz...
Befehl „touch“ Es hat zwei Funktionen: Eine beste...
.imgbox{ Breite: 1200px; Höhe: 612px; Rand rechts...