【发布时间】:2021-11-12 10:04:57
【问题描述】:
假设当前日期时间是12.11.21 10:58:52
我需要创建具有这些等效值的bytearray:
bytearray([0x12 0x11 0x21 0x10 0x58 0x52])
我试图解决这个问题几个小时。
当我运行程序时出现以下错误:
DateTime = bytearray([date_day,date_month,date_year,date_hour,date_minute,date_second])
TypeError: 'str' object cannot be interpreted as an integer
所以为了简化,变量DateTime 需要是这样的
DateTime = bytearray([0x12 0x11 0x21 0x10 0x58 0x52])
这是我的程序:
import sys
import asyncio
import platform
from bleak import BleakClient
from datetime import datetime
def hexConvert(value):
a = int(value, 16)
an_integer = int(hex(a), 16)
hex_value = hex(an_integer)
return hex_value
# Get local DateTime
local_dt = datetime.now()
# Convert to hexadecimal values for sending to BLE stack
date_day = hexConvert("0x{}".format(local_dt.day))
date_month = hexConvert("0x{}".format(local_dt.month))
date_year = hexConvert("0x{}".format(local_dt.year-2000))
date_hour = hexConvert("0x{}".format(local_dt.hour))
date_minute = hexConvert("0x{}".format(local_dt.minute))
date_second = hexConvert("0x{}".format(local_dt.second))
print(date_day,date_month,date_year,date_hour,date_minute,date_second) #output= 0x12 0x11 0x21 0x10 0x58 0x52
DateTime = bytearray([date_day,date_month,date_year,date_hour,date_minute,date_second])
【问题讨论】:
-
你为什么要这样表示日期/时间?此外,例如的十六进制表示十进制 52 不是 x52 而是 x34 ...
-
转换为字节串/bytearray,你可以使用例如
bytearray(map(int, "12.11.21 10:58:52".replace('.',' ').replace(':',' ').split()))