使用Django时,接收错误“Struct()参数1必须是字符串,而不是unicode”

时间:2018-01-13 11:01:30

标签: python django unicode

我在Django中运行脚本但在python中运行正常时收到错误“struct()参数1必须是字符串,而不是unicode”。 我正在尝试将SID的十六进制版本从Active Directory转换为字符串版本。 错误说参数1是unicode但是我可以告诉它不是。 据我所知,参数1是SID的切片值。

感谢任何帮助。         这是代码:

        result = con.search_s(ldap_base, ldap.SCOPE_SUBTREE, criteria, 
        attributes)

        sid = result[0][1]["objectSid"][0]

        if sys.version_info.major < 3:
            revision = ord(sid[0])
        else:
            revision = sid[0]

        if sys.version_info.major < 3:
            number_of_sub_ids = ord(sid[1])
        else:
            number_of_sub_ids = sid[1]

        iav = struct.unpack('>Q', b'\x00\x00' + sid[2:8])[0]

        sub_ids = [struct.unpack('<I', sid[8 + 4 * i:12 + 4 * i])[0]
                    for i in range(number_of_sub_ids)]

        sid = 'S-{0}-{1}-{2}'.format(revision, iav, '-'.join([str(sub_id) 
        for sub_id in sub_ids]))

错误第1部分 enter image description here

错误第2部分 enter image description here

错误第3部分 enter image description here

0 个答案:

没有答案