@@ -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
2648const errorMsg1 = 'Please insert an IPv4 address in Binary (4 bytes)'
2749const 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
2955function 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