Python 3.x 如何将字符串的元素转换为包格式(例如:';123-56.2';->;b';\x01\x02\x03\x0-…';

Python 3.x 如何将字符串的元素转换为包格式(例如:';123-56.2';->;b';\x01\x02\x03\x0-…';,python-3.x,string,byte,Python 3.x,String,Byte,我想创建一个bytes变量,我可以使用特定的格式将其解包。(我想将数据“存储”为类似内存的格式(C struct type),然后使用规则提取信息) 输入数据是一个字符串数组,其中包含如下数字字符:'1',2',..,分别是'-'和'.,我使用它们来表示浮点/双变量 我尝试使用bytes.fromhex(),但它不支持'-'和'.字符 尝试: msg = '212120121-70.43' print(bytes.fromhex(msg)) 输出: ValueError: non-hexade

我想创建一个bytes变量,我可以使用特定的格式将其解包。(我想将数据“存储”为类似内存的格式(C struct type),然后使用规则提取信息) 输入数据是一个字符串数组,其中包含如下数字字符:
'1',2',..
,分别是
'-'
'.
,我使用它们来表示浮点/双变量

我尝试使用
bytes.fromhex()
,但它不支持
'-'
'.
字符

尝试:

msg = '212120121-70.43'
print(bytes.fromhex(msg))
输出:

ValueError: non-hexadecimal number found in fromhex() arg at position 9. ('-' char is on that position).
我正在寻找能帮助我的最佳解决方案。
谢谢!!

您需要多灵活的解决方案?它总是xxx-xx.xx格式吗?第一个数字部分的长度是否有限制?如果它有可预测的格式,可能会起作用。是的。格式是:“B”,“H”,“H”,“B”(使用包格式=>第一部分有8个字符)然后是一些参数,可以是浮点数,负数,整数,uint8_t。灵活性可以出现在参数端。我明白了,所以可以有多个额外的参数?你如何区分字符串的一端和另一端,以及你希望它是什么类型?你这样做是为了节省空间还是出于什么原因?我有一个字典ring表示我定义的一个“命令”(我正在开发一个无线电通信应用程序,我使用一些命令来更改信息)。每个comand都有特定类型的参数。因此,根据我使用的comand,我使用字典知道我需要多少参数以及它们是什么类型。comand的类型在第一部分。(B类型的最后一个字符)。