Python 3将字符串转换为十六进制字节

时间:2018-02-21 21:13:58

标签: python bluetooth arduino hex byte

我需要将一个简单的字符串转换为一个使用十六进制表示的字节数组,就像该网站一样: http://string-functions.com/string-hex.aspx

然后使用python通过蓝牙发送此字符串,arduino读取单个字节,如下所示:

 char buff[1000];
 int i =0;
 int typeByte = serial->read();
 int data = serial->read();
 while (true) {
   if (data == -1) continue;
   if (data == 254 || data == 10) break;  
   buff[i++] = data;
   data = serial->read();
   delay(10);
 }
 String buffer(buff);
 if(buffer.startsWith("AUTH")){
        dostuff();
 }

然后将它们存储在char []数组中,并用于与命令名进行比较。

这是我在Python项目中使用的代码(消息是一个字符串,例如" AUTH")

self.bluetooth_socket.send(b"\x01" + message.encode('ascii') + b"\x10")

这就是arduino收到的:

01 65 85 84 72 16

但看起来应该是这样的:

01 41 55 54 48 10

我知道第二个字节数组基本上是第一个只用十六进制表示的数组 - 我将如何实现呢?

1 个答案:

答案 0 :(得分:0)

是的,在第一个数组中你发送了ascii值。 要在python3中获取十六进制值:

>>> import codecs
>>> codecs.encode(message.encode("ascii"), "hex")
b'41555448'