Python代码片段的解释

Python代码片段的解释,python,Python,对于一个课堂作业,我正在分析亚马逊Kindle数字版权管理的实现是如何工作的,以及如何击败它。在我的研究中,我遇到了一组Python脚本,它们从加密中提取图书数据。它符合我解释论文中加密破解部分的需要 问题是,除了打印“Hello World”之外,我对Python不太精通,也没有其他经验 在阅读源代码时,我遇到了这个片段 def __init__(self, infile): # initial sanity check on file self.data_file = fil

对于一个课堂作业,我正在分析亚马逊Kindle数字版权管理的实现是如何工作的,以及如何击败它。在我的研究中,我遇到了一组Python脚本,它们从加密中提取图书数据。它符合我解释论文中加密破解部分的需要

问题是,除了打印“Hello World”之外,我对Python不太精通,也没有其他经验

在阅读源代码时,我遇到了这个片段

def __init__(self, infile):
    # initial sanity check on file
    self.data_file = file(infile, 'rb').read()
    self.mobi_data = ''
    self.header = self.data_file[0:78]

    if self.header[0x3C:0x3C+8] != 'BOOKMOBI' and self.header[0x3C:0x3C+8] != 'TEXtREAd':
        raise DrmException("invalid file format")

    self.magic = self.header[0x3C:0x3C+8]
    self.crypto_type = -1
我对代码的解释如下:

  • self.data\u文件
    是一个字节数组,由
    文件(infle,'rb')
    调用上的
    read()
    返回
  • self.header
    是数据文件前79个字节的值

  • 我遇到的问题是,
    self.header[0x3C:0x3C+8]
    的意思是什么?

    这是一个正常的切片,就像
    self.data\u文件[0:78]
    ,除了使用十六进制文字作为偏移量之外
    0x3C
    在base10中是60,因此它与
    self.header[60:60+8]
    相同,它是一个普通的切片,与
    self.data\u文件[0:78]
    类似,只是使用十六进制文字作为偏移量
    0x3C
    在base10中是60,因此它与
    self.header[60:60+8]
    self.header[0x3C:0x3C+8]
    将从
    header
    获取一个8字节的字符串,从偏移量0x3C开始。

    self.header[0x3C:0x3C+8]
    将从
    header获取一个8字节的字符串,从偏移量0x3C开始。

    的长度
    [0:78]
    是78,而不是79。片段不包含结束值,因此它是
    0..77
    @MarkRansom,我使用的大多数代码都包含最后一个值,而不是独占的。谢谢你的提示。
    [0:78]
    的长度是78,而不是79。片段不包含结束值,因此它是
    0..77
    @MarkRansom,我使用的大多数代码都包含最后一个值,而不是独占的。谢谢你的提示。