Skip to content

Commit 3b8ea4b

Browse files
committed
add IPv4 Decimal to Binary conversion
1 parent 3b03006 commit 3b8ea4b

File tree

2 files changed

+125
-0
lines changed

2 files changed

+125
-0
lines changed

problemSolvingPractices/problems/p3-BinaryConversion/index.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,15 @@ <h3> Convert an IPv4 address from Binary to Decimal </h3><br>
1717
<br><br>
1818
<h4 id="result"></h4>
1919

20+
<br><br><br><br>
21+
22+
<h3> Convert an IPv4 address from Decimal to Binary </h3><br>
23+
<!-- <h3> Example: 10101100.00010000.00100010.00000011(Binary) to 172.16.34.3 </h3><br> -->
24+
25+
<input type="text" placeholder="Example: 172.16.34.3" id="input2">
26+
<button id="but2">Convert</button>
27+
<br><br>
28+
<h4 id="result2"></h4>
29+
2030
</body>
2131
</html>

problemSolvingPractices/problems/p3-BinaryConversion/p3-BinaryConversion.js

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,35 @@ Binary.addEventListener('keydown', (event) => {
2222
})
2323

2424

25+
const Decimal = document.getElementById('input2')
26+
const ConvertButtonTwo = document.getElementById('but2')
27+
28+
ConvertButtonTwo.addEventListener('click', () => {
29+
// .trim() gets rid of spaces at start or end of string
30+
const result = DeicmalToBinary(Decimal.value.trim())
31+
32+
document.getElementById('result2').innerText = result
33+
})
34+
35+
Decimal.addEventListener('keydown', (event) => {
36+
if (event.key === 'Enter') {
37+
38+
const result = DeicmalToBinary(Decimal.value.trim())
39+
40+
document.getElementById('result2').innerText = result
41+
// Decimal.value = ''
42+
43+
}
44+
})
45+
46+
2547

2648
const errorMsg1 = 'Please insert an IPv4 address in Binary (4 bytes)'
2749
const errorMsg2 = 'Please make sure the input format is correct and each Octet is exactly 8 numbers'
50+
const errorMsg3 = 'Please insert an IPv4 address in Decimal (4 bytes)'
51+
const errorMsg4 = 'Please make sure the input format is correct'
52+
const errorMsg5 = 'Please make sure the input format is correct and each Octet is correct length'
53+
const errorMsg6 = 'Please make sure the input format is correct and each Octet is in 0-255 range'
2854

2955
function BinaryToDecimal(Binary){
3056

@@ -84,4 +110,93 @@ function BinaryToDecimal(Binary){
84110

85111
return `Result: ${firstOctetDecimal}.${secondOctetDecimal}.${thirdOctetDecimal}.${fourthOctetDecimal}`
86112

113+
}
114+
115+
function DeicmalToBinary(Decimal){
116+
117+
if (!Decimal) return errorMsg3
118+
if (Decimal.length > 15 || Decimal.length < 7) return errorMsg4;
119+
120+
const chart = [128,64,32,16,8,4,2,1]
121+
122+
const octets = Decimal.split('.')
123+
124+
if (octets[0].length > 3 || octets[0].length < 1) return errorMsg5
125+
if (octets[1].length > 3 || octets[1].length < 1) return errorMsg5
126+
if (octets[2].length > 3 || octets[2].length < 1) return errorMsg5
127+
if (octets[3].length > 3 || octets[3].length < 1) return errorMsg5
128+
129+
130+
131+
let temp = 0
132+
133+
134+
let firstOctet = ''
135+
let secondOctet = ''
136+
let thirdOctet = ''
137+
let fourthOctet= ''
138+
139+
// if octetOne from input includes anyhting thats not a number (like 'h')
140+
// we make octetOne be more that 3 digits (4444) which would return errorMsg6
141+
let octetOne = Number(octets[0]) ? Number(octets[0]) : 4444
142+
if (octetOne < 0 || octetOne > 255) return errorMsg6
143+
144+
for (let i=0; i < chart.length; i++) {
145+
146+
if (octetOne >= chart[i]) {
147+
temp = octetOne - chart[i]
148+
firstOctet += 1
149+
octetOne = temp
150+
} else {
151+
firstOctet +=0
152+
}
153+
}
154+
155+
let octetTwo = Number(octets[1]) ? Number(octets[1]) : 4444
156+
if (octetTwo < 0 || octetTwo > 255) return errorMsg6
157+
158+
for (let i=0; i < chart.length; i++) {
159+
160+
if (octetTwo >= chart[i]) {
161+
temp = octetTwo - chart[i]
162+
secondOctet += 1
163+
octetTwo = temp
164+
} else {
165+
secondOctet +=0
166+
}
167+
168+
}
169+
170+
let octetThree = Number(octets[2]) ? Number(octets[2]) : 4444
171+
if (octetThree < 0 || octetThree > 255) return errorMsg6
172+
173+
for (let i=0; i < chart.length; i++) {
174+
175+
if (octetThree >= chart[i]) {
176+
temp = octetThree - chart[i]
177+
thirdOctet += 1
178+
octetThree = temp
179+
} else {
180+
thirdOctet +=0
181+
}
182+
183+
}
184+
185+
let octetFour = Number(octets[3]) ? Number(octets[3]) : 4444
186+
if (octetFour < 0 || octetFour > 255) return errorMsg6
187+
188+
for (let i=0; i < chart.length; i++) {
189+
190+
if (octetFour >= chart[i]) {
191+
temp = octetFour - chart[i]
192+
fourthOctet += 1
193+
octetFour = temp
194+
} else {
195+
fourthOctet +=0
196+
}
197+
198+
}
199+
200+
return `Result: ${firstOctet}.${secondOctet}.${thirdOctet}.${fourthOctet}`
201+
87202
}

0 commit comments

Comments
 (0)