我有点困惑。
我正在尝试使用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系统的设计方式引起了我很大的反感。
答案 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)