String to hexadecimal conversion

P

Praveena P

Hi folks,

I am new to Python... so am not too sure about how the type conversion
works.

I have to read a file that contains hexadecimal data and use the data
further to do some arithmetic calculations.
A sample of the input is : 00000000000020E0000032F800000000400022005E
The problem I am facing is this:
I am using f.read(2) to read a byte at a time, but the data that is
read is a string rather than a number. So it kind of hampers any
arithmetic operations I perform on this data...

Could you please suggest some method I could use for this?

Thanks guys!
Praveena
 
P

Praveena P

Hi folks,

I am new to Python... so am not too sure about how the type conversion
works.

I have to read a file that contains hexadecimal data and use the data
further to do some arithmetic calculations.
A sample of the input is : 00000000000020E0000032F800000000400022005E
The problem I am facing is this:
I am using f.read(2) to read a byte at a time, but the data that is
read is a string rather than a number. So it kind of hampers any
arithmetic operations I perform on this data...

Could you please suggest some method I could use for this?

Thanks guys!
Praveena

I was thinking of using dictionary like this:
hex_to_decimal = {"1":"1", "2":"2", "3":"3", "4":"4", "5":"5",
"6":"6", "7":"7", "8":"8", "9":"9", "A":"10", "B":"11", "C":"12",
"D":"13", "E":"14", "F":"15", "0":"0"}

Extracting one character at a time and converting to decimal, and then
using the decimal numbers generated for the further calculations....

Would there be a simpler way to do it?
 
J

John Machin

Hi folks,

I am new to Python... so am not too sure about how the type conversion
works.

I have to read a file that contains hexadecimal data and use the data
further to do some arithmetic calculations.
A sample of the input is : 00000000000020E0000032F800000000400022005E
The problem I am facing is this:
I am using f.read(2) to read a byte at a time, but the data that is
read is a string rather than a number. So it kind of hampers any
arithmetic operations I perform on this data...

Could you please suggest some method I could use for this?

*IF* all the data consists of unsigned 8-bit integers
a_byte = f.read(2)
uint8 = int(a_byte, 16)

But I doubt it and that would be rather slow anyway. If your data is
homogenous, look at the array module. Otherwise, once you've worked
out how to break your file down into records, and what the layout of
each record is, you'll need the struct module.

HTH,
John
 
P

Praveena P

*IF* all the data consists of unsigned 8-bit integers
a_byte = f.read(2)
uint8 = int(a_byte, 16)

But I doubt it and that would be rather slow anyway. If your data is
homogenous, look at the array module. Otherwise, once you've worked
out how to break your file down into records, and what the layout of
each record is, you'll need the struct module.

HTH,
John

Hey John,

Thanks! That was useful...
I am still putting the code together with all the operations... will
probably have loads more queries... :)

Have a good day!
Praveena
 
P

Praveena P

*IF* all the data consists of unsigned 8-bit integers
a_byte = f.read(2)
uint8 = int(a_byte, 16)

But I doubt it and that would be rather slow anyway. If your data is
homogenous, look at the array module. Otherwise, once you've worked
out how to break your file down into records, and what the layout of
each record is, you'll need the struct module.

HTH,
John

Hey John,

Thanks! That was useful...
I am still putting the code together with all the operations... will
probably have loads more queries... :)

Have a good day!
Praveena
 
S

Steve Holden

Praveena said:
Hi folks,

I am new to Python... so am not too sure about how the type conversion
works.

I have to read a file that contains hexadecimal data and use the data
further to do some arithmetic calculations.
A sample of the input is : 00000000000020E0000032F800000000400022005E
The problem I am facing is this:
I am using f.read(2) to read a byte at a time, but the data that is
read is a string rather than a number. So it kind of hampers any
arithmetic operations I perform on this data...

Could you please suggest some method I could use for this?

Generally speaking, reading a file 2 bytes at a time i going to be
inefficient and untidy.

Does this help?

Or have I misunderstood your intention?

regards
Steve
 
I

imageguy

Hi folks,

I am new to Python... so am not too sure about how the type conversion
works.

I have to read a file that contains hexadecimal data and use the data
further to do some arithmetic calculations.
A sample of the input is : 00000000000020E0000032F800000000400022005E
The problem I am facing is this:
I am using f.read(2) to read a byte at a time, but the data that is
read is a string rather than a number. So it kind of hampers any
arithmetic operations I perform on this data...

Could you please suggest some method I could use for this?

Thanks guys!
Praveena

check out the "struct" module in the standard python library.
It's title says it all "Interpreting strings as packed binary data".
I used this extensively to reverse engineer a couple proprietary file
structures.

You can read large chucks of the file - perhaps a record ? - and then
based on the format provided, convert it to a tuple.

Good luck.

g.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,008
Latest member
Rahul737

Latest Threads

Top