在python 2.7中将char转换为十六进制值

时间:2019-06-06 14:54:26

标签: python-2.7 hex

我有点困惑。

我正在尝试使用python 2.7对MIFARE卡进行时间戳记

我正在尝试的是binascii.hexlify(char),但这似乎返回一个字符串,这使得整个时间戳记TWICE与开始时一样长。

我也尝试了hex(ord(char)),但这似乎也返回了一个字符串。...

我这里真正需要的是一个字符串的ascii值,按字符分割,因为书写功能需要十六进制值。

尝试过这样的操作

        MIFAREReader.MFRC522_Read(4)

        tmp = datetime.datetime.now().strftime("%d.%m. %H:%M")
        payload = []

        #print tmp
        #print "tmp-len is %d in size" % len(tmp)

        for x in range(0,len(tmp)):
            payload.append(binascii.hexlify(tmp[x]))    
            print tmp[x]

        print payload

        MIFAREReader.MFRC522_Write(4,payload)

我可以仅使用字符并将它们转换为十六进制,怎么办? 我对python感到有些迷茫,因为它在c ++中似乎很容易,但我不想放弃。

请帮助我

编辑:示例中的向量通过以下方式填充:

        # Fill the data with 0xFF
        for x in range(0,16):
            data.append(0xFF)

每超过16位都会导致明显的溢出。库的编写方式和MIFARE系统的设计方式引起了我很大的反感。

1 个答案:

答案 0 :(得分:0)

经过一番谷歌搜索,我发现了一种可行的方法,我认为:

似乎您可以将以下内容链接在一起:

print type(int(hex(ord("c")),16))

这将回到我身边

<type 'int'>

我认为这是可行的,我不确定它是否明确需要一个十六进制值,但是我可以从这里继续。

编辑: 因此,在下班休息并调试我的代码后,似乎出现的问题是循环跳了一下,弄乱了一切。 我以一种正确的时间戳将其写入卡的方式进行了修复,很可能是这样(如果有人感兴趣的话):

        MIFAREReader.MFRC522_Read(4)

        tmp = datetime.datetime.now().strftime("%d.%m.%Y %H:%M")
        payload = []

        #print tmp
        #print "tmp-len is %d in size" % len(tmp)

        for x in range(0,16):
            try:
                payload.append(ord(tmp[x])) 
            except:
                payload.append(0xFF)
            #print tmp[x]

        print payload

        MIFAREReader.MFRC522_Write(4,payload)