V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
brucecobb
V2EX  ›  Python

Python Socket 问题

  •  
  •   brucecobb · 2019-06-18 15:31:05 +08:00 · 2032 次点击
    这是一个创建于 1985 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我用 UDP 发送的时候明明就是发送是 16 进制的字节数据,如下:
    -------
    \x68\x74\x74\x70\x3A\x2F\x2F\x65\x77\x61\x74\x63\x68\x2E\x73\x63\x69\x66\x69\x6E\x65\x2E\x63\x6E\x2F\x61\x70\x69\x2F\x76\x31\x2E\x30\x2E\x30\x2F\x75\x70\x64\x61\x74\x65
    -------
    在 recvfrom 数据的时候:就是给我直接转换成字母了,我就要原生的数据咋办?
    8 条回复    2019-06-18 20:31:01 +08:00
    hmxxmh
        1
    hmxxmh  
       2019-06-18 15:49:06 +08:00 via Android
    编码解码问题吧
    codechaser
        2
    codechaser  
       2019-06-18 15:49:41 +08:00 via Android
    在转成 16 进制😏
    ipwx
        3
    ipwx  
       2019-06-18 15:51:04 +08:00
    Python 2 ?

    '\x68' 本来就是 'h' 啊。这俩完全等价,你还想怎么样?
    brucecobb
        4
    brucecobb  
    OP
       2019-06-18 16:14:50 +08:00
    @ipwx 我用的 python3,感谢您的回复,问题是这样的,这个数据里面有隐藏的信息要提取,第一:这个数据就要 16 进制的,不要转成字母,第二:我转回 16 进制之后\x 就没了,如果没有\x,我怎么区分\x68\x74 还是\x6874。
    brucecobb
        5
    brucecobb  
    OP
       2019-06-18 16:15:08 +08:00
    我用的 python3,感谢您的回复,问题是这样的,这个数据里面有隐藏的信息要提取,第一:这个数据就要 16 进制的,不要转成字母,第二:我转回 16 进制之后\x 就没了,如果没有\x,我怎么区分\x68\x74 还是\x6874。 @codechaser
    BingoXuan
        6
    BingoXuan  
       2019-06-18 17:01:08 +08:00
    [hex(ord(x)) for x in your_data]
    linw1995
        7
    linw1995  
       2019-06-18 19:22:04 +08:00
    不用 struct.unpack ?
    no1xsyzy
        8
    no1xsyzy  
       2019-06-18 20:31:01 +08:00   ❤️ 3
    @brucecobb 你到底是 bytes 还是 unicode ?
    bytes 的话不存在 \x???? 这种四位的。并且 b'\x68' == b'h',在内存中是一样的,只是表达方式( repr )的不同。
    还是说你想要传的数据应该是 rb'\x68'?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.