Skip to content

Added a hex-bin.py file in conversion.py #4433

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
May 20, 2021
Merged
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
1f6f4c6
Added a file that converts hexa to binary
ktsrivastava29 May 17, 2021
9149d37
Added file to convert hexadecimal to binary
ktsrivastava29 May 17, 2021
71cbcbc
Update hex-bin.py
ktsrivastava29 May 17, 2021
9d4e6cb
added type hint in the code
ktsrivastava29 May 17, 2021
e82db59
Added doctest
ktsrivastava29 May 17, 2021
6549855
Added code to handle exception
ktsrivastava29 May 17, 2021
65d275b
Resolved doctest issue
ktsrivastava29 May 17, 2021
fc99340
Update hex-bin.py
ktsrivastava29 May 17, 2021
cbce9e1
Modified convert function
ktsrivastava29 May 18, 2021
e794056
Added WhiteSpace around operators.
ktsrivastava29 May 18, 2021
4a36cad
Made more pythonic
ktsrivastava29 May 18, 2021
9e212c6
removed whitespace
ktsrivastava29 May 18, 2021
63c2096
Updated doctest command
ktsrivastava29 May 18, 2021
8d5c32a
Removed whitespace
ktsrivastava29 May 19, 2021
6ba22e3
imported union
ktsrivastava29 May 19, 2021
180f602
Replaced flag with is_negative
ktsrivastava29 May 19, 2021
a5c49a1
updated return type
ktsrivastava29 May 19, 2021
95e9da1
removed pip command
ktsrivastava29 May 19, 2021
77aec40
Resolved doctest issue
ktsrivastava29 May 19, 2021
14a2d8b
Resolved doctest error
ktsrivastava29 May 19, 2021
350817e
Reformated the code
ktsrivastava29 May 19, 2021
e6abb38
Changes function name
ktsrivastava29 May 20, 2021
62a52e2
Changed exception handling statements
ktsrivastava29 May 20, 2021
c02fa6a
Update and rename hex-bin.py to hex_to_bin.py
cclauss May 20, 2021
213e22a
Update newton_method.py
cclauss May 20, 2021
e24b8a3
Update matrix_operation.py
cclauss May 20, 2021
2d9cf63
Update can_string_be_rearranged_as_palindrome.py
cclauss May 20, 2021
a80cadd
Update hex_to_bin.py
cclauss May 20, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions conversions/hex_to_bin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
def hex_to_bin(hex_num: str) -> int:
"""
Convert a hexadecimal value to its binary equivalent
#https://stackoverflow.com/questions/1425493/convert-hex-to-binary
Here, we have used the bitwise right shift operator: >>
Shifts the bits of the number to the right and fills 0 on voids left as a result.
Similar effect as of dividing the number with some power of two.
Example:
a = 10
a >> 1 = 5

>>> hex_to_bin("AC")
10101100
>>> hex_to_bin("9A4")
100110100100
>>> hex_to_bin(" 12f ")
100101111
>>> hex_to_bin("FfFf")
1111111111111111
>>> hex_to_bin("-fFfF")
-1111111111111111
>>> hex_to_bin("F-f")
Traceback (most recent call last):
...
ValueError: Invalid value was passed to the function
>>> hex_to_bin("")
Traceback (most recent call last):
...
ValueError: No value was passed to the function
"""

hex_num = hex_num.strip()
if not hex_num:
raise ValueError("No value was passed to the function")

is_negative = hex_num[0] == "-"
if is_negative:
hex_num = hex_num[1:]

try:
int_num = int(hex_num, 16)
except ValueError:
raise ValueError("Invalid value was passed to the function")

bin_str = ""
while int_num > 0:
bin_str = str(int_num % 2) + bin_str
int_num >>= 1

return int(("-" + bin_str) if is_negative else bin_str)


if __name__ == "__main__":
import doctest

doctest.testmod()