Got it , MRAB, Thanks for the explanation it was such a simple thing I was breaking my head over it
On Tue, Feb 21, 2017 at 1:34 AM, MRAB <pyt...@mrabarnett.plus.com> wrote: > On 2017-02-20 19:43, Ganesh Pal wrote: > >> On Feb 21, 2017 12:17 AM, "Rhodri James" <rho...@kynesim.co.uk> wrote: >> >> On 20/02/17 17:55, Ganesh Pal wrote: >> >> 1. The only difference between both the programs the difference are just >>> the below lines. >>> >>> newdata = '64000101057804'.decode('hex') >>> >>> and >>> >>> newdata = "" >>> newdata = '64000101057804' >>> newdata.decode('hex') >>> >>> >>> What is happening here and how do I fix this in program 2 ? for my >>> eyes >>> there doesn't look any difference . >>> >>> >> Python strings are immutable; methods like decode() create a brand new >> string for you. What your program 2 version does is to name the string of >> hex digits "newdata", decode it as hex into a new string and then throw >> that new string away. Your program 1 version by contrast decodes the >> string of digits as hex and then names is "newdata", throwing the original >> string of digits away >> >> >> Thanks for the reply James. >> >> How can I make my program 2 look like program 1 , any hacks ? because I >> get newdata value( as a hx return value Of type string )from a function. >> >> In this: > > newdata.decode('hex') > > The .decode method doesn't change newdata in-place, it _returns_ the > result. > > You're doing anything with that result. You're not binding (assigning) it > to a name. You're not passing it into a function. You're not doing > _anything_ with it. You're just letting it be discarded, thrown away. > > You could ask the user for the hex string: > > hex_string = raw_input('Enter the hex string: ') > > and then decode it: > > newdata = hex_string.decode('hex') > > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list