【问题标题】:IronPython - Convert int to byte arrayIronPython - 将 int 转换为字节数组
【发布时间】:2010-10-22 05:23:33
【问题描述】:

在 Python 中获取字符串长度,然后将该 int 转换为字节数组的正确方法是什么?将其打印到控制台进行测试的正确方法是什么?

【问题讨论】:

    标签: .net python ironpython bytearray


    【解决方案1】:

    使用struct。

    import struct
    
    print struct.pack('L', len("some string")) # int to a (long) byte array
    

    【讨论】:

    • +1。抱歉跟进问题,那么长数据类型是无限的。 docs.python.org/library/stdtypes.html 我需要将值(长度)存储在 6 个字节中。解决此问题的最佳方法是什么。我需要在较小的数字上填充字节。
    • struct 模块使用的数据类型与 Python 中使用的数据类型不同。在这种情况下,'long' 是 4 个字节。 6 字节对于整数来说是一个奇怪的长度,但你可以使用 struct.pack('
    • 做类似 [ord(x) for x in struct.pack('L', ) ] 不是更好吗?如果我用它来转换当前的纪元,我会得到一个像 'e0\xf1U' 这样的字符串,使用 ord 我会得到 [100, 48, 241, 85] 这看起来更有用。
    【解决方案2】:

    使用.Net:

    byte[] buffer = System.BitConverter.GetBytes(string.Length)
    print System.BitConverter.ToString(buffer)
    

    这会将字节输出为十六进制。您可能需要清理 IronPython 的语法。

    【讨论】:

    • +1 谢谢。我希望我知道纯 Python 语法是什么……但我一直遇到 Python 3 文档。
    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 2023-03-03
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多