【问题标题】:Converting a register of unsigned-int16 to Ascii text将 unsigned-int16 的寄存器转换为 Ascii 文本
【发布时间】:2021-09-10 11:49:54
【问题描述】:

有一个 unsigned-int16 的寄存器...确实代表 ASCII..

[18281, 26465, 25193, 29765, 29800, 25970, 28261, 29745, 12081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

上面显示的文字应该被翻译成

"GigabitEthernet1/1"

问题是如何进行转换。有一些解决方案,例如。当然首选 Python

decoded = OrderedDict([
        ('string', decoder.decode_string(len(strng))),....

但它们确实需要长度...我只想要文本...

【问题讨论】:

    标签: python integer ascii


    【解决方案1】:

    一个简单的实现是:

    >>> "".join(chr(i//256)+chr(i%256) for i in my_int16_list)
    'GigabitEthernet1/1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    

    或者如果你想排除0s:

    >>> "".join(chr(i//256)+chr(i%256) for i in my_int16_list if i > 0)
    'GigabitEthernet1/1'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多