Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

カスタムマッピングJavaScriptを使用して、整数を10進数から16進数にマッピングします


通常、10進数を16進数(基数16)に変換するときは、set0123456789ABCDEFを使用して数値をマップします。

まったく同じように機能する関数を作成する必要がありますが、ユーザーは上記のスケールではなく、任意のスケールを自由に使用できます。

例-

The hexadecimal notation of the decimal 363 is 16B
But if the user decides to use, say, a scale ‘qwertyuiopasdfgh’ instead of
‘0123456789ABCDEF’, the number 363, then will be represented by wus

それが私たちに求められていることです。

それでは、再帰を利用して整数から16進を構築する関数toHex()を作成して、これを実行しましょう。正確には、4つの引数を取りますが、これらの4つのうち、最初の2つだけがエンドユーザーに使用されます。

最初は16進数に変換される数値で、2番目はカスタムスケールです。これはオプションであり、指定されている場合は正確に16文字の文字列である必要があります。そうでない場合、関数はfalseを返します。他の2つの引数はhexStringとisNegativeで、デフォルトでそれぞれemptystringとbooleanに設定されています。

const num = 363;
const toHex = (
   num,
   hexString = '0123456789ABCDEF',
   hex = '',
   isNegative = num < 0
   ) => {
   if(hexString.length !== 16){
      return false;
   }
   num = Math.abs(num);
   if(num && typeof num === 'number'){
      //recursively append the remainder to hex and divide num by 16
      return toHex(Math.floor(num / 16), hexString,
      `${hexString[num%16]}${hex}`, isNegative);
   };
   return isNegative ? `-${hex}` : hex;
};
console.log(toHex(num, 'QWERTYUIOPASDFGH'));
console.log(toHex(num));
console.log(toHex(num, 'QAZWSX0123456789'))

出力

コンソールの出力は-

になります
WUS
16B
A05

  1. JavaScriptで循環小数の長さを見つける

    問題 最初で唯一の引数として数値numを受け取るJavaScript関数を作成する必要があります 私たちの関数は2つのことをする必要があります まず、数値が10で素数であるかどうかを確認する必要があります。そうでない場合は、-1を返す必要があります(共有する唯一の共通要素が1の場合、数値は他の数値で素数です)。 数値が10の素数である場合、その数値が1で除算されるときに、繰り返される小数部分の長さを返す必要があります。 たとえば、関数への入力が-の場合 入力 const num = 123; 出力 const output = 5; 出力の説明 数123は確かに10で素

  2. JavaScriptを使用してビットが整数で交互になっていますか?

    問題 最初で唯一の引数として整数numを受け取るJavaScript関数を作成する必要があります。 この関数は、numのバイナリ表現に交互のビットがあるかどうか、つまり、隣接する2つのビットの値が常に異なるかどうかを確認する必要があります。 たとえば、関数への入力が 入力 const num = 5; 出力 const output = true; 出力の説明 5のバイナリ形式は101であり、ビットが交互になっているためです。 例 以下はコードです- const num = 5; const isAlternating = (num = 1) => {