Movatterモバイル変換


[0]ホーム

URL:


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

Commitfd24ffc

Browse files
committed
Fix requested changes
1 parent724ff7e commitfd24ffc

File tree

2 files changed

+85
-19
lines changed

2 files changed

+85
-19
lines changed

‎src/main/java/com/conversions/HexadecimalToBinary.java‎

Lines changed: 74 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,92 @@ public class HexadecimalToBinary {
1111

1212
publicStringhexToBin (StringhexStr) {
1313

14-
StringbinaryString ="",hexaNumbers ="0123456789ABCDEF";
15-
intindexOfHex,decimalNumber =0,k =1;
14+
StringbinaryString ="",hexaNumbers ="0123456789ABCDEF",
15+
DecimalStr ="",binaryStringBefore ="" ,binaryStringAfter ="";
16+
intindexOfHex,decimalNumber =0,k =1,n =1,z=1,decimalNumberBefore =0
17+
,decimalNumberAfter =0;
1618
charletter;
17-
intbinaryArray[] =newint [50];
19+
intbinaryArray[] =newint [60];
20+
intbinaryArrayBefore[] =newint [60];
21+
intbinaryArrayAfter[] =newint [60];
1822

1923
hexStr =hexStr.toUpperCase();
20-
24+
intpointPosition =hexStr.indexOf(".");
2125
/**
2226
* Transform the hexadecimal number to decimal number
2327
*/
28+
if (pointPosition == -1) {
2429
for (inti =0 ;i <hexStr.length();i++) {
25-
letter =hexStr.charAt(i);
26-
indexOfHex =hexaNumbers.indexOf(letter);
27-
decimalNumber =16 *decimalNumber +indexOfHex;
30+
letter =hexStr.charAt(i);
31+
indexOfHex =hexaNumbers.indexOf(letter);
32+
decimalNumber =16 *decimalNumber +indexOfHex;
33+
}
2834
}
35+
else {
36+
for (inti =0 ;i <pointPosition ;i++) {
37+
letter =hexStr.charAt(i);
38+
indexOfHex =hexaNumbers.indexOf(letter);
39+
decimalNumberBefore =16 *decimalNumberBefore +indexOfHex;
40+
}
41+
StringdecimalNumberBeforeStr =String.valueOf(decimalNumberBefore);
42+
43+
for (inti =pointPosition+1 ;i <hexStr.length() ;i++) {
44+
letter =hexStr.charAt(i);
45+
indexOfHex =hexaNumbers.indexOf(letter);
46+
decimalNumberAfter =16 *decimalNumberAfter +indexOfHex;
47+
}
48+
49+
StringdecimalNumberAfterStr =String.valueOf(decimalNumberAfter);
50+
51+
DecimalStr =decimalNumberBeforeStr +'.' +decimalNumberAfterStr;
52+
}
2953

54+
55+
56+
intpointPositionDec =DecimalStr.indexOf(".");
3057
/**
31-
*Transform decimal number to binary and put it in an array
58+
*Check whether the result contains a floating point or not
3259
*/
33-
while (decimalNumber !=0) {
34-
binaryArray[k++] =decimalNumber %2;
35-
decimalNumber =decimalNumber /2;
60+
if (pointPositionDec == -1) {
61+
while (decimalNumber !=0) {
62+
binaryArray[k++] =decimalNumber %2;
63+
decimalNumber =decimalNumber /2;
64+
}
65+
66+
}else {
67+
/**
68+
* If it contains floating points we need to divide it into two parts before the point and after it
69+
*/
70+
while (decimalNumberBefore !=0) {
71+
binaryArrayBefore[z++] =decimalNumberBefore %2;
72+
decimalNumberBefore =decimalNumberBefore /2;
73+
}
74+
while (decimalNumberAfter !=0) {
75+
binaryArrayAfter[n++] =decimalNumberAfter %2;
76+
decimalNumberAfter =decimalNumberAfter /2;
77+
}
78+
3679
}
37-
/**
38-
* Put the binary in a string
39-
*/
40-
for (intj =k-1 ;j>0 ;j--) {
41-
binaryString =binaryString +binaryArray[j];
80+
81+
if(pointPositionDec == -1) {
82+
for (intj =k-1 ;j>0 ;j--) {
83+
binaryString =binaryString +binaryArray[j];
84+
}
85+
}else {
86+
for (intj =z-1 ;j>0 ;j--) {
87+
binaryStringBefore =binaryStringBefore +binaryArrayBefore[j];
88+
}
89+
90+
for (intj =n-1 ;j>0 ;j--) {
91+
binaryStringAfter =binaryStringAfter +binaryArrayAfter[j];
92+
}
93+
/**
94+
* Remove the zeroes in the end of the hexadecimal
95+
*/
96+
binaryStringAfter =binaryStringAfter.replaceAll("0*$","").replaceAll("\\.$","");
97+
98+
99+
binaryString =binaryStringBefore +"." +binaryStringAfter;
42100
}
43101

44102
returnbinaryString;
Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,30 @@
11
packagecom.conversions;
22

3-
importstaticorg.junit.jupiter.api.Assertions.*;
4-
53
importorg.junit.jupiter.api.Assertions;
64
importorg.junit.jupiter.api.Test;
75

86
classHexadecimalToBinaryTest {
97

108
@Test
119
voidtest() {
10+
//HexadecimaltTesting
1211
HexadecimalToBinaryhexadecimalToBinary =newHexadecimalToBinary();
13-
Assertions.assertEquals("10101011",hexadecimalToBinary.hexToBin("AB"),"Incorrect Conversion");
12+
Assertions.assertEquals("1011110011101111",hexadecimalToBinary.hexToBin("BCEF"),"Incorrect Conversion");
1413
Assertions.assertEquals("10101101010101111001101",hexadecimalToBinary.hexToBin("56ABCD"),"Incorrect Conversion");
1514
Assertions.assertEquals("10011101111011010001001",hexadecimalToBinary.hexToBin("4ef689"),"Incorrect Conversion");
1615
Assertions.assertEquals("10011101111",hexadecimalToBinary.hexToBin("4EF"),"Incorrect Conversion");
1716
Assertions.assertEquals("101010111100110111101111",hexadecimalToBinary.hexToBin("ABCDEF"),"Incorrect Conversion");
1817
//It returns -1 if you enter a wrong hexaDecimal
1918
Assertions.assertEquals("-1",hexadecimalToBinary.hexToBin("K"),"Incorrect Conversion");
19+
20+
21+
//Hexadecimal with floating point testing
22+
Assertions.assertEquals("101010111100.101111",hexadecimalToBinary.hexToBin("ABC.BC"),"Incorrect Conversion");
23+
Assertions.assertEquals("10101101010.101111001101",hexadecimalToBinary.hexToBin("56A.BCD"),"Incorrect Conversion");
24+
Assertions.assertEquals("1001110.1111011010001001",hexadecimalToBinary.hexToBin("4e.f689"),"Incorrect Conversion");
25+
Assertions.assertEquals("1001110.1111",hexadecimalToBinary.hexToBin("4E.F"),"Incorrect Conversion");
26+
Assertions.assertEquals("10101011110011011110.1111",hexadecimalToBinary.hexToBin("ABCDE.F"),"Incorrect Conversion");
27+
2028
}
2129

2230
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp