Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > hex value in string back to real hex value

Reply
Thread Tools

hex value in string back to real hex value

 
 
jack
Guest
Posts: n/a
 
      09-07-2004
Hi everyone,

I get in a program an hexa value codes in a string for example \xe7
which correspond to a french character.

The string would be "\xe7t\xe7" and I want to write in a file été and
not \xe7t\xe7.

Sure I could write a function to analyse the string, find all the hexa
caracter (because of the \x) and convert the value to decimal and back
to the correct cahracter.

Is there something simplier ?

An example below for generating such a string :
a=""
a=a+"\\"
a=a+"x"
a=a+"e"
a=a+"7"
len(a)= 4 # so it is not understood as the hexa value !!
a
"\xe7"


Thanks in advance.

Jack.
 
Reply With Quote
 
 
 
 
vincent wehren
Guest
Posts: n/a
 
      09-07-2004
jack wrote:
> Hi everyone,
>
> I get in a program an hexa value codes in a string for example \xe7
> which correspond to a french character.
>
> The string would be "\xe7t\xe7" and I want to write in a file été and
> not \xe7t\xe7.
>
> Sure I could write a function to analyse the string, find all the hexa
> caracter (because of the \x) and convert the value to decimal and back
> to the correct cahracter.
>
> Is there something simplier ?
>
> An example below for generating such a string :
> a=""
> a=a+"\\"
> a=a+"x"
> a=a+"e"
> a=a+"7"
> len(a)= 4 # so it is not understood as the hexa value !!
> a
> "\xe7"
>
>
> Thanks in advance.
>
> Jack.


You might want to take a look at the binascii module.

--
Vincent Wehren
 
Reply With Quote
 
 
 
 
Phil Frost
Guest
Posts: n/a
 
      09-07-2004
I'm not sure just what your problem is here. The best solution would be
to make your strings "\xe7" and not "\\xe7". The former contains the
real byte 0xe7, while the latter contains three bytes. When the former
is written to a file, you will get whatever letter 0xe7 represents
depending on what encoding you use.

If you have a reason to not do that (perhaps you are prompting for some
data and want escapes to be recgonized) then you could use something
like this:

a = sys.stdin.readline()
a = eval('"""'+a.replace('"""','"""+\'"""\'+"""')+'""" ')

On Tue, Sep 07, 2004 at 09:47:01AM -0700, jack wrote:
> Hi everyone,
>
> I get in a program an hexa value codes in a string for example \xe7
> which correspond to a french character.
>
> The string would be "\xe7t\xe7" and I want to write in a file ?t? and
> not \xe7t\xe7.
>
> Sure I could write a function to analyse the string, find all the hexa
> caracter (because of the \x) and convert the value to decimal and back
> to the correct cahracter.
>
> Is there something simplier ?
>
> An example below for generating such a string :
> a=""
> a=a+"\\"
> a=a+"x"
> a=a+"e"
> a=a+"7"
> len(a)= 4 # so it is not understood as the hexa value !!
> a
> "\xe7"
>
>
> Thanks in advance.
>
> Jack.

 
Reply With Quote
 
Peter Otten
Guest
Posts: n/a
 
      09-07-2004
jack wrote:

> I get in a program an hexa value codes in a string for example \xe7
> which correspond to a french character.
>
> The string would be "\xe7t\xe7" and I want to write in a file été and
> not \xe7t\xe7.


"\xe7t\xe7" _is_ the same as "été" if you are using e. g. the ISO-8859-1
encoding, so chances are you will see été if you open the file in a text
editor without the need of prior conversions.

But I may be misunderstanding you and you really have "\\xe7t\\xe7" - in
that case you can use de/encode to switch between the two representations:

>>> "été".encode("string_escape")

'\\xe9t\\xe9'
>>> _.decode("string_escape")

'\xe9t\xe9'
>>> print _

été

(In the interpreter the result of the previous calculation is assigned to _
if it is not None)

Peter


 
Reply With Quote
 
jack
Guest
Posts: n/a
 
      09-08-2004
Thanks,

The solution provided by phil and peter works perfectly for my
solution (and I will have to work a little more to understand them
fully). I will check the binascii.

Regards.
Jack.

Phil and peter

Peter Otten <(E-Mail Removed)> wrote in message news:<chks4h$o8r$01$(E-Mail Removed)-online.com>...
> jack wrote:
>
> > I get in a program an hexa value codes in a string for example \xe7
> > which correspond to a french character.
> >
> > The string would be "\xe7t\xe7" and I want to write in a file été and
> > not \xe7t\xe7.

>
> "\xe7t\xe7" _is_ the same as "été" if you are using e. g. the ISO-8859-1
> encoding, so chances are you will see été if you open the file in a text
> editor without the need of prior conversions.
>
> But I may be misunderstanding you and you really have "\\xe7t\\xe7" - in
> that case you can use de/encode to switch between the two representations:
>
> >>> "été".encode("string_escape")

> '\\xe9t\\xe9'
> >>> _.decode("string_escape")

> '\xe9t\xe9'
> >>> print _

> été
>
> (In the interpreter the result of the previous calculation is assigned to _
> if it is not None)
>
> Peter

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
incrementing string/hex value from file and write back Matthias Güntert Python 1 08-20-2009 09:35 PM
hex string to hex value tim Python 8 11-23-2005 06:27 PM
[Fwd: Re: hex string to hex value] tim Python 2 11-23-2005 07:18 AM
Hex Color Codes - Hex 6 <=> Hex 3 lucanos@gmail.com HTML 10 08-18-2005 11:21 PM
hex(-5) => Futurewarning: ugh, can't we have a better hex than '-'[:n<0]+hex(abs(n)) ?? Bengt Richter Python 6 08-19-2003 07:33 AM



Advertisments