gpt4 book ai didi

python - 将字符串转换为字节会在控制台中打印出奇怪的十六进制代码

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:09 26 4
gpt4 key购买 nike

介绍我的问题:

我正在尝试编写一个 C++ 程序,使用 WinSock2 通过 UDP 接收数据。为此,我有一个预写的 Python 脚本,可以将 10 字节的数据包发送到指定的端口,然后 C++ 程序会在该端口接收它们。我已经让数据传输正常工作,但是我对正在发送的数据感到困惑。

我的问题:我正在从 cmd 运行 Python 脚本,它在控制台上打印发送的文本。我还在脚本中添加了一行,将字符串转换为字节以验证发送的到底是什么。第一行是我添加的,相当简单:

logger.debug("Sending packet len %s, data %s", sizeof(packet), bytes(packet))
logger.debug("Sending packet len %s, data %s", sizeof(packet), packet)

这是我终端的输出(来自发送的 3 个不同的数据包):

Image here

让我感到困惑的是,我希望十六进制代码只包含十六进制符号,但那里也有一些看似随机的符号/字母,即使实际打印的文本看起来还不错。有人可以向我解释一下,这些符号是从哪里来的,因为我不确定我应该如何在我的 C++ 代码中解释接收端的这些信息。

最佳答案

您的脚本不会打印纯十六进制,而是打印经过解释的十六进制字符串。您的一些十六进制字符可以用 ASCII 解释和显示,其他则不能。我在我的解释器中测试了字符串替换,你看到了相同的结果:

>>> "%s".encode() % b"\xfa\x3f\x00"
b'\xfa?\x00'

\x3f? 的 ASCII 十六进制代码。

关于python - 将字符串转换为字节会在控制台中打印出奇怪的十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com