python-2.7 - 在 python 2.7 中将 char 转换为十六进制值
问题描述
我在这里有点困惑。
我正在尝试使用 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 系统的设计让我感到非常害怕。
解决方案
经过一番谷歌搜索后,我发现了一种可行的方法,我假设:
似乎您可以将以下内容链接在一起:
print type(int(hex(ord("c")),16))
这会回到我身边
<type 'int'>
我认为这会起作用,我不确定它是否明确需要一个十六进制值,但我可以从这里继续。
编辑:所以,在下班并调试我的代码之后,问题似乎是循环 somehop 搞砸了一切。我修复了它,现在将正确的时间戳写入卡,机会是这样的(如果有人感兴趣的话):
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)
推荐阅读
- spring - SpringBoot SAML SP Shibboleth IDP
- php - 如何让 Mysqlnd_ms 在不同的实例上运行每个查询
- angular - 在 Angular 中打印 JSON 对象中的数组元素
- spotfire - Spotfire 从组中批量删除禁用用户
- angular - 通过 TS 在 Angular 6 中创建模型类
- python - 将 CSV 转换为 HTML 保持格式
- r - R在多维列表的所有维度中替换变量名
- javascript - 倒数计时器:无法将属性“textContent”设置为 null
- python - 如何使 python lambda 表达式的索引静态化
- sql-server - 通过邮件预定的 SQL Server 报告