0

我正在尝试使用 Python 查看传输流,并读取第一个字节。完成后,我将检查该字节是否为 0x47 以确定传输流是否有效。

这是我尝试过的代码:

with open("my_ts_file.ts", "rb") as file_object:
    byte = file_object.read(1)
    if byte == 0x47:
        print("Found first sync byte")
        print(byte)
    else:
        print("Not a valid Transport Stream")
        print(byte)

因此,如果第一个字节是 0x47 或不是,它应该显示。

我在这里遇到的问题是此代码的输出显示:

Not a valid Transport Stream
b'G'

正如@szatmary 在这里指出的那样:使用 Python 从 MPEG 传输流中提取第一个 188 字节数据包,但看不到同步字节,字母 G 实际上是 0x47(十六进制)的 ASCII 表示。

我怎样才能有效地对本质上相同但以两种不同方式表示的值进行比较?

4

2 回答 2

1

您需要转换0x47成字符串表示使用chr()

with open("my_ts_file.ts", "rb") as file_object:
    byte = file_object.read(1)
    if byte == chr(0x47):
        print("Found first sync byte")
        print(byte)
    else:
        print("Not a valid Transport Stream")
        print(byte)
于 2019-11-18T12:16:47.467 回答
0

使用 python 中的位串模块。


在此处输入图像描述

于 2021-08-21T13:40:43.580 回答