【问题标题】:Parse a binary file with Regular Expressions?用正则表达式解析二进制文件?
【发布时间】:2018-05-19 14:10:06
【问题描述】:

我有两个字节类型的变量,我已经连接(用空格分隔),所以我可以将它作为一个变量发送到服务器(套接字编程)。我想弄清楚的是如何将它们分开并使用正则表达式将它们分配给它们的原始变量。我已经咨询了regular expressions parsing a binary file,但它对我不起作用。 Here 是我尝试表达式后的输出,只是为了获取密码变量

ciphertext = re.match(b'\S', ciphertext)

它通常只匹配前几个字符并返回一个对象,这不是我想要的。我究竟做错了什么?

编辑:我可能正在艰难地做这件事。老实说,关于如何使用 UDP 通过套接字发送 2 字节对象的任何建议。事实证明真的很难

【问题讨论】:

  • 请在您的问题中包含您的输出,而不是作为屏幕截图的链接。
  • 但总而言之,你得到一个对象的原因是因为这是re.match 返回的。它会返回一个match object(或None,如果字符串不匹配),它允许您使用匹配的文本。我不完全确定你期待这个电话做什么。

标签: python regex python-3.x


【解决方案1】:

最终使用 str.rpartition 来解决我的问题。这不是最明显的答案,但它确实有效。

【讨论】:

    【解决方案2】:

    您为什么使用正则表达式来执行此操作?你应该看看struct 模块:

    In [1]: import struct
    
    In [2]: magic = b'\xcf\xfa\xed\xfe'
    
    In [3]: decoded = struct.unpack('<I', magic)[0]
    
    In [4]: hex(decoded)
    Out[4]: '0xfeedfacf'
    

    另外,你可以使用this recipe 来解码二进制文件

    【讨论】:

    • 我可以使用结构将两个字节对象组合成一个变量,以后可以重新分离吗?如果我可以从每个变量中复制整个值并将它们放入一个结构中,那将是完美的,但它会不断裁剪值。
    猜你喜欢
    • 2011-08-02
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多