カスタムマッピング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
-
JavaScriptで循環小数の長さを見つける
問題 最初で唯一の引数として数値numを受け取るJavaScript関数を作成する必要があります 私たちの関数は2つのことをする必要があります まず、数値が10で素数であるかどうかを確認する必要があります。そうでない場合は、-1を返す必要があります(共有する唯一の共通要素が1の場合、数値は他の数値で素数です)。 数値が10の素数である場合、その数値が1で除算されるときに、繰り返される小数部分の長さを返す必要があります。 たとえば、関数への入力が-の場合 入力 const num = 123; 出力 const output = 5; 出力の説明 数123は確かに10で素
-
JavaScriptを使用してビットが整数で交互になっていますか?
問題 最初で唯一の引数として整数numを受け取るJavaScript関数を作成する必要があります。 この関数は、numのバイナリ表現に交互のビットがあるかどうか、つまり、隣接する2つのビットの値が常に異なるかどうかを確認する必要があります。 たとえば、関数への入力が 入力 const num = 5; 出力 const output = true; 出力の説明 5のバイナリ形式は101であり、ビットが交互になっているためです。 例 以下はコードです- const num = 5; const isAlternating = (num = 1) => {