特别标注:
有些网站转载我的文章不标明出处,并且转载不到位,没有把相应的链接一块转过去,比如说下载链接或相关文献的链接等,导致一些网友阅读和使用出现障碍和知识的不连续,所以在此特别标注:我的这篇文章发表在CSDN博客上,可以到CSDN博客来阅读。
正题:
今天琢磨了一下Python UDP Socket 16进制数据发送。
原以为UDP发送和接受的都是字符,怎么能够发送16进制?但细想,其实接收的都是“010100101******”这样的东东。所有,要想发送16进制也是可以做到的。
要实现这个东东,就得用到字节byte,因为Python中没有字节(Byte)类型(可以把这里的字符串理解为字节流),所以得用到python的struct模块来进行字节流转换。
我的思路是这样子的:
1、首先假设有这样一个16进制字符串str: B1 C2 FF 82
2、利用python的字符数组符号分割字符串str,把字符串里面的16进制数据字符分割出来:“B1”, "C2", "FF","82";
3、通过函数int( s, 16)把16进制转换成整形数【函数里面s代表一个16进制字符串】;
4、利用python提供的struct模块里的struct.pack(fmt,v1, v2, ...)函数把整形转换成字节流【具体知识请看附录】;
5、利用socket.sendto函数发送字节流。
【例子:部分重点代码】
addr1 = ("192.168.1