将字符串转换为十六进制

时间:2015-04-07 15:04:39

标签: python string int hex

我有一个字符串文件,但其中的字符串代表十六进制值。例如,我的文件中有这种字符串:

1091    A3B7    56FF    ...

我不想将它们用作字符串,而是作为十六进制值;然后将十六进制转换为int。

例如:

1091(in string)---> 1091(in hexa)---> 4241 # The int value of 1091 in hexa

所以我在网上看了一下。我尝试了很多不同的方法,例如:

  1. Print a string as hex bytes?

  2. Convert hex string to int in Python

  3. 但是没有什么能与我的需要完全吻合,或者根本不起作用。

    这是我的代码的一部分:

    t = False
    i = 0
    while t != True and h != True or i <=100: # My way to look each string of my file
        file = row[1]
        read_byte = file[i]
    
        if read_byte == 'V': #V is the letter in my file which says that it s the data that I want then there is 2 kinds of channel 01 and 02 that interest me
    
            i=i+1
            a=i+2
            read_bytechannel = file[i:a]  #read 2 strings because the channel can be '01' or '02'
    
            if read_bytechannel == '01':
                print(read_bytechannel)
                i=i+1
                a=i+4
                read_bytetemp = file[i:a] # Reading 4 strings because the value is the int value of the two hexa.
                realintvalue= # (?????????convert the read_bytetemp string value into an hexa value, then into an int from the hexa)
    
                tempfinal = realintvalue/100 # I have to divide by 100 the int value to get the real temperature
                t = True # This condition just tell me that I already know the temporary
    
        i = i+1
    

    这是我想要阅读的那种文件:

    @
    I01010100B00725030178
    V01109103
    I02020100B00725030148
    V0215AA5C
    $
    @
    

2 个答案:

答案 0 :(得分:1)

>>> int('1091', 16)
4241

int的第二个参数是解释第一个参数的基础。

答案 1 :(得分:1)

你可以尝试这样的东西,int with base 16:

>>> my_string = "1091 A3B7 56FF"
>>> map(lambda x:int(x,16), my_string.split())
[4241, 41911, 22271]

或者你可以同时拥有:

>>> map(lambda x:[x,int(x,16)], my_string.split())
[['1091', 4241], ['A3B7', 41911], ['56FF', 22271]]

如果您对lambdamap不满意,可以使用列表理解

>>> [[x,int(x,16)] for x in my_string.split()]
[['1091', 4241], ['A3B7', 41911], ['56FF', 22271]]