Are there any other better ways to access a single bit of string of digits?
Denis McMahon
denismfmcmahon at gmail.com
Sun May 31 15:51:43 EDT 2015
On Sun, 31 May 2015 11:36:35 -0700, fl wrote:
> I am new to Python. I would manipulate a string of hex numbers. If the
> first digit is bigger than 7, the first two digits are required to add
> 4.
What happens if the first two digits are ff, does it become 103 or 03.
If you have ffff_ffff_ffff
Do you want to create 103ff_103ff_103ff
or
03ff_03ff_03ff
or
0400_0400_03ff
or
10400_0400_03ff ......
> For example, '8022_3345' will be changed to '8422_3345'. The underscore
> between two 4-digit's was generated previously (i.e.
> it is already in the .txt file).
>
> I have not tried to read the .txt file to a list yet. I just try the
> following:
>
> tmp ['12345678', '23456789', '3456789a', '456789ab']
>
> Each 8-digit hex number is assigned to a variable, such as:
>
> digit8=tmp[0]
>
> I can compare digit8[0] with 7, and so on...
>
> The underscore, I think, can be removed by first a string replace.
>
> My question here is:
>
> Do you have better ways than my tmp, digit8 operation?
Yes, if these are numbers, manipulate them as numbers, not strings.
def bing(n):
n = int(n.replace("_", ""), base=16) # convert to numbers
if n > 0x7fffffff: # if 0x80000000 or more
n = n + 0x04000000 # add 0x04000000
return n # and return result
newnums = [ bing(x) for x in oldnums ]
It could probably be done as a single list comprehension, but it might
get a bit messy.
--
Denis McMahon, denismfmcmahon at gmail.com
More information about the Python-list
mailing list