0

我正在尝试转换从 NetFlowv9 记录接收到的值,更具体地说,是“IN_BYTES=”值。问题是我可以获得该值,但它以字符串格式出现,这意味着它已经解码并且收到的值类似于: b'\x00\x03q\x1d' 我将此值分配给一个变量,如下所示:

numOfBytes = (flowEntry[flowEntry.index("IN_BYTES=b") + 9:flowEntry.index("IN_PKTS=")-1])

我需要 int 中的这个值,但是,正如我所说,这是一个“str”对象,因此我似乎无法再次将它“解码”为“utf-8”或从“list()”获取值?

到目前为止,这是我尝试过的:将“numOfBytes”解码为 utf-8:

numOfBytesDec = numOfBytes.decode('utf-8')

但我显然得到一个错误:

AttributeError: 'str' object has no attribute 'decode'

我也尝试过转换为列表:

numOfBytesList = list(numOfBytes)

但我得到了错误:

TypeError: 'str' object cannot be interpreted as an integer

发生的事情是 numOfBytes = "b'\x00\x03q\x1d'" 并且由于它是一个字符串,我无法操纵它来将其转换为数字。我期望的是这样的:

numOfBytes = b'\x00\x03q\x1d'
numOfBytesList = list(numOfBytes)

并且 'numOfBytesList' 应该返回类似 [0, 3, 113, 29] 的东西,所以我可以在之后计算 0*(255*255*255)+3*(255*255)+113*255+29 例如..

有什么办法可以将字符串转换为可用的 Bytes 对象?TLDR:有没有办法转换"b'\x00\x03q\x1d'"b'\x00\x03q\x1d'

4

1 回答 1

0

使用bytes函数https://www.programiz.com/python-programming/methods/built-in/bytes

你的字符串有一个你不需要"b'\x00\x03q\x1d'"的前导"b'"和尾随,所以"'"

list(bytes(numOfBytes[2:-2], 'utf8'))

应该:

  • 去掉字符串的前两个和最后一个字符
  • 使用 utf8 解码
  • 转换为列表
于 2019-09-26T13:23:01.590 回答