Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit db0a8c2

Browse files
chore: Merge pull request #788 from ddhira123/master
Added BinaryToHex Conversion
2 parents 91d9701 + 0f39167 commit db0a8c2

File tree

4 files changed

+81
-4
lines changed

4 files changed

+81
-4
lines changed

‎Bit-Manipulation/test/IsPowerOfTwo.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {IsPowerOfTwo} from '../IsPowerOfTwo'
1+
import {IsPowerOfTwo} from '../IsPowerOfTwo'
22

33
test('Check if 0 is a power of 2 or not:', () => {
44
const res = IsPowerOfTwo(0)

‎Conversions/BinaryToHex.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
const pad = (num, padlen) => {
2+
var pad = new Array(1 + padlen).join(0)
3+
return (pad + num).slice(-pad.length)
4+
}
5+
6+
const hexLookup = (bin) => {
7+
let binary = bin
8+
if (binary.length < 4) {
9+
binary = pad(binary, 4)
10+
}
11+
switch (binary) {
12+
case '0000': return '0'
13+
case '0001': return '1'
14+
case '0010': return '2'
15+
case '0011': return '3'
16+
case '0100': return '4'
17+
case '0101': return '5'
18+
case '0110': return '6'
19+
case '0111': return '7'
20+
case '1000': return '8'
21+
case '1001': return '9'
22+
case '1010': return 'A'
23+
case '1011': return 'B'
24+
case '1100': return 'C'
25+
case '1101': return 'D'
26+
case '1110': return 'E'
27+
case '1111': return 'F'
28+
}
29+
}
30+
const binaryToHex = (binaryString) => {
31+
/*
32+
Function for convertung Binary to Hex
33+
34+
1. The conversion will start from Least Significant Digit (LSB) to the Most Significant Bit (MSB).
35+
2. We divide the bits into sections of 4-bits starting from LSB to MSB.
36+
3. If the MSB get less than 4 bits, then we pad 0s to the front of it.
37+
38+
For Example:
39+
Binary String = '1001101'
40+
41+
1. Divide it to 2 parts => ['100', '1101']
42+
2. Pad 0s the MSB so it'll be => ['0100', '1101']
43+
3. Use the lookup table and merge them, therefore the result is 4D.
44+
45+
*/
46+
47+
let result = ''
48+
binaryString = binaryString.split('')
49+
for (let i = binaryString.length - 1; i >= 0; i = i - 4) {
50+
if (i >= 3) {
51+
result += hexLookup(binaryString.slice(i - 3, i + 1).join(''))
52+
} else {
53+
result += hexLookup(binaryString.slice(0, i + 1).join(''))
54+
}
55+
}
56+
return result.split('').reverse().join('')
57+
}
58+
59+
export default binaryToHex

‎Conversions/TemperatureConversion.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ const fahrenheitToRankine = (fahrenheit) => {
4040
const kelvinToCelsius = (kelvin) => {
4141
// Wikipedia reference: https://en.wikipedia.org/wiki/Kelvin
4242
// Wikipedia reference: https://en.wikipedia.org/wiki/Celsius
43-
return Math.round((kelvin) - 273.15)
44-
43+
return Math.round((kelvin) - 273.15)
4544
}
4645

4746
const kelvinToFahrenheit = (kelvin) => {
@@ -53,7 +52,7 @@ const kelvinToFahrenheit = (kelvin) => {
5352
const kelvinToRankine = (kelvin) => {
5453
// Wikipedia reference: https://en.wikipedia.org/wiki/Kelvin
5554
// Wikipedia reference: https://en.wikipedia.org/wiki/Rankine_scale
56-
return Math.round(((kelvin) * 9 / 5))
55+
return Math.round(((kelvin) * 9 / 5))
5756
}
5857

5958
const rankineToCelsius = (rankine) => {

‎Conversions/test/BinaryToHex.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import binaryToHex from '../BinaryToHex'
2+
3+
describe('BinaryToHex', () => {
4+
it('expects to return correct hexadecimal value', () => {
5+
expect(binaryToHex('1000')).toBe('8')
6+
})
7+
8+
it('expects to return correct hexadecimal value for more than one hex digit', () => {
9+
expect(binaryToHex('11101010')).toBe('EA')
10+
})
11+
12+
it('expects to return correct hexadecimal value for padding-required binary', () => {
13+
expect(binaryToHex('1001101')).toBe('4D')
14+
})
15+
16+
it('expects to return correct hexadecimal value, matching (num).toString(16)', () => {
17+
expect(binaryToHex('1111')).toBe(parseInt('1111', 2).toString(16).toUpperCase())
18+
})
19+
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /