1 | let binary = {}
|
2 |
|
3 | binary.octetToBinary = (octet) => {
|
4 | const binaryOctet = Number(octet).toString(2)
|
5 |
|
6 | let zeros = ''
|
7 | if (binaryOctet.length < 8) {
|
8 | const leadingZeros = 8 - binaryOctet.length
|
9 | for (let i = 0; i < leadingZeros; i++) {
|
10 | zeros += '0'
|
11 | }
|
12 | }
|
13 |
|
14 | return zeros + binaryOctet
|
15 | }
|
16 |
|
17 | binary.octetToDecimal = (octet) => {
|
18 | let octetInDecimal = 0
|
19 |
|
20 | let invalidOctet = false
|
21 | for (let i = 0; i < octet.length; i++) {
|
22 | if (octet.charAt(i) !== '0' && octet.charAt(i) !== '1') invalidOctet = true
|
23 | }
|
24 |
|
25 | if (invalidOctet) {
|
26 | throw new Error('The octet given is invalid since it includes numbers other then 0 or 1.')
|
27 | }
|
28 |
|
29 | if (octet.length !== 8) {
|
30 | throw new Error('An octet must be 8 Bits long.')
|
31 | }
|
32 |
|
33 | if (octet.charAt(0) === '1') octetInDecimal += 128
|
34 | if (octet.charAt(1) === '1') octetInDecimal += 64
|
35 | if (octet.charAt(2) === '1') octetInDecimal += 32
|
36 | if (octet.charAt(3) === '1') octetInDecimal += 16
|
37 |
|
38 | if (octet.charAt(4) === '1') octetInDecimal += 8
|
39 | if (octet.charAt(5) === '1') octetInDecimal += 4
|
40 | if (octet.charAt(6) === '1') octetInDecimal += 2
|
41 | if (octet.charAt(7) === '1') octetInDecimal += 1
|
42 |
|
43 | return octetInDecimal
|
44 | }
|
45 |
|
46 | binary.logicalAnd = (octetOne, octetTwo) => {
|
47 | return octetOne & octetTwo
|
48 | }
|
49 |
|
50 | binary.splitIntoOctets = (bits) => {
|
51 | const regex = Array.from(bits.matchAll(/.{1,8}/gm))
|
52 | let octetArray = []
|
53 |
|
54 | for (let i = 0; i < regex.length; i++) {
|
55 | octetArray.push(regex[i][0])
|
56 | }
|
57 |
|
58 | return octetArray
|
59 | }
|
60 |
|
61 | export default binary |
\ | No newline at end of file |