mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-25 10:28:39 +00:00
Compare commits
2 Commits
6e742ab167
...
eedc5935ad
Author | SHA1 | Date | |
---|---|---|---|
|
eedc5935ad | ||
|
b8b3b8c593 |
@ -59,30 +59,16 @@ def octal_to_binary(octal: str) -> str:
|
|||||||
oct_string = str(octal).strip()
|
oct_string = str(octal).strip()
|
||||||
if not oct_string:
|
if not oct_string:
|
||||||
raise ValueError("Empty string was passed to the function")
|
raise ValueError("Empty string was passed to the function")
|
||||||
is_negative = oct_string[0] == "-"
|
is_negative = oct_string.startswith("-")
|
||||||
if is_negative:
|
if is_negative:
|
||||||
oct_string = oct_string[1:]
|
oct_string = oct_string[1:]
|
||||||
|
binary_num = "-0b"
|
||||||
|
else:
|
||||||
|
binary_num = "0b"
|
||||||
if not oct_string.isdigit() or not all(0 <= int(char) <= 7 for char in oct_string):
|
if not oct_string.isdigit() or not all(0 <= int(char) <= 7 for char in oct_string):
|
||||||
raise ValueError("Non-octal value was passed to the function")
|
raise ValueError("Non-octal value was passed to the function")
|
||||||
decimal_number = 0
|
binary_num += str(bin(int(oct_string, 8)))[2:]
|
||||||
for char in oct_string:
|
return binary_num
|
||||||
decimal_number = 8 * decimal_number + int(char)
|
|
||||||
if is_negative:
|
|
||||||
decimal_number = -decimal_number
|
|
||||||
# Converting Decimal to Binary
|
|
||||||
if decimal_number == 0:
|
|
||||||
return "0b0"
|
|
||||||
negative = False
|
|
||||||
if decimal_number < 0:
|
|
||||||
negative = True
|
|
||||||
decimal_number = -decimal_number
|
|
||||||
binary: list[int] = []
|
|
||||||
while decimal_number > 0:
|
|
||||||
binary.insert(0, decimal_number % 2)
|
|
||||||
decimal_number >>= 1
|
|
||||||
if negative:
|
|
||||||
return "-0b" + "".join(str(e) for e in binary)
|
|
||||||
return "0b" + "".join(str(e) for e in binary)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user