1

I'm working on Visual Studio about python Project and The user input like that 010203 and I use this code for saparating the input:

dynamic_array = [ ] 
hexdec = input("Enter the hex number to binary ");
strArray = [hexdec[idx:idx+2]  for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
print(dynamic_array[0] + " IAM" )  
print(dynamic_array[1] + " NOA" )
print(dynamic_array[2] + " FCI" )

So, the output is:

01 IAM
02 NOA
03 FCI

However my expected output converting this hex numbers to binary numbers look like this:

00000001 IAM
00000010 NOA
00000011 FCI

Is there any way to do this?

2

3 Answers 3

3

It's a lot easier if you thnk of hex as a integer (number).
There's a lot of tips on how to convert integers to different outcomes, but one useful string representation tool is .format() which can format a integer (and others) to various outputs.

This is a combination of:

The solutions would be:

binary = '{:08b}'.format(int(hex_val, 16))

And the end result code would look something like this:

def toBin(hex_val):
    return '{:08b}'.format(int(hex_val, 16)).zfill(8)

hexdec = input("Enter the hex number to binary ");
dynamic_array = [toBin(hexdec[idx:idx+2]) for idx in range(len(hexdec)) if idx%2 == 0]
print(dynamic_array[0] + " IAM" )  
print(dynamic_array[1] + " NOA" )
print(dynamic_array[2] + " FCI" )

Rohit also proposed a pretty good solution, but I'd suggest you swap the contents of toBin() with bin(int()) rather than doing it per print statement.

I also restructured the code a bit, because I saw no point in initializing dynamic_array with a empty list. Python doesn't need you to set up variables before assigning values to them. There was also no point in creating strArray just to replace the empty dynamic_array with it, so concatenated three lines into one.

machnic also points out a good programming tip, the use of format() on your entire string. Makes for a very readable code :)

Hope this helps and that my tips makes sense.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you @Torxed you safe my life
0
dynamic_array = [ ] 
hexdec = input("Enter the hex number to binary ");
strArray = [hexdec[idx:idx+2]  for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
print((bin(int(dynamic_array[0],16))[2:]).zfill(8)+ " IAM" )  
print((bin(int(dynamic_array[1],16))[2:]).zfill(8) + " NOA" )
print((bin(int(dynamic_array[2],16))[2:]).zfill(8) + " FCI")

1 Comment

Welcome and Happy Coding :)
0

You can format the string to achieve it. Your code may look like:

dynamic_array = [ ] 
hexdec = input("Enter the hex number to binary ")

strArray = [hexdec[idx:idx+2] for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
print("{:08b} IAM".format(int(dynamic_array[0])))
print("{:08b} NOA".format(int(dynamic_array[1])))
print("{:08b} FCI".format(int(dynamic_array[2])))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.