【发布时间】:2017-04-11 09:44:09
【问题描述】:
在串行通信中,我需要将该密文从 python 发送到能够使用 C 读取的 UART。
首先,在python端使用这个技术:
ciphertext=(b'\x24\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x00\x30\x69\xc4\xe0\xd8')
ser.write(ciphertext)
在C端,我把接收到的密文放在一个缓冲区中。我测试如果第一个字节24,则数据包的开始:
if (buffer_RX[0]=='\x24')
{
for (i=1;i<=17;i++) //sizeof(buffer_RX)==17
{
printf("%x \n",buffer_RX[i]);
}
}
else {
printf("It is not a packet!");
}
我得到的结果是:
70
b4
c5
5a
d8
cd
b7
80
6a
7b
0
30
69
c4
e0
d8
所以我有两个问题,
- 拳头是为什么\x00是这样显示的,我的意思是只有一个零0?
- 第二个是我怎么会有同样的表现:
const unsigned int ciphertext[4] = {0x70b4c55a, 0xd8cdb780, 0x6a7b0030,0x69c4e0d8};
如果我认为这是字节之间的连接,我的意思是可能:
unsigned int plaintext[1];
plaintext[1]= buffer_RX[3]|buffer_RX[4]|buffer_RX[5];
但我不确定,我认为我有语法错误。
此表示将帮助我继续下一步。但我不知道我怎么能得到它。
【问题讨论】:
-
printf("%02x\n",buffer_RX[i]);将回答您的第一个问题。 -
@wildplasser,它纠正了我的 0,但它发送了另一个 d8 分隔的最后一个字节。 d和8