Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

사용자 정의 매핑 JavaScript를 사용하여 정수를 10진수에서 16진수로 매핑

<시간/>

일반적으로 10진수를 16진수(기수 16)로 변환할 때 set0123456789ABCDEF를 사용하여 숫자를 매핑합니다.

우리는 정확히 동일한 기능을 수행하지만 사용자에게 위에서 언급한 척도가 아닌 임의의 척도를 사용할 수 있는 자유를 제공하는 함수를 작성해야 합니다.

예를 들어 -

10진수 363의 16진수 표기법은 16B하지만 사용자가 363인 '0123456789ABCDEF' 대신 'qwertyuiopasdfgh' 척도를 사용하기로 결정하면 wus로 표시됩니다.

그것이 우리가 해야 할 일입니다.

따라서 정수에서 16진수를 만들기 위해 재귀를 사용하는 함수 toHex()를 만들어 이를 수행해 보겠습니다. 정확히 말하면 4개의 인수가 필요하지만 이 4개 중 처음 2개만 최종 사용자에게 사용됩니다.

첫 번째는 16진수로 변환할 숫자이고 두 번째는 사용자 정의 스케일이며 선택 사항이며 제공되는 경우 정확히 16자의 문자열이어야 합니다. 그렇지 않으면 함수는 false를 반환합니다. 다른 두 인수는 hexString과 isNegative로 기본적으로 각각 emptystring과 boolean으로 설정되어 있습니다.

예시

const num =363;const toHex =( num, hexString ='0123456789ABCDEF', hex ='', isNegative =num <0 ) => { if(hexString.length !==16){ return false; } 숫자 =Math.abs(숫자); if(num &&typeof num ==='number'){ // 나머지를 16진수에 재귀적으로 추가하고 num을 16으로 나눕니다. return toHex(Math.floor(num / 16), hexString, `${hexString[num%16] }${hex}`, isNegative); }; 반환 isNegative? `-${hex}` :hex;};console.log(toHex(num, 'QWERTYUIOPASDFGH'));console.log(toHex(num));console.log(toHex(num, 'QAZWSX0123456789')) 

출력

콘솔의 출력은 다음과 같습니다. -

WUS16BA05