在python中切片字符串时未获得正确的结果

在python中切片字符串时未获得正确的结果,python,Python,我将24位长的二进制数切成3个8位长的数字。 下面是我的代码: def extract_number(number): number_in_string = str(number) red = number_in_string[:8] green = number_in_string[8:16] blue = number_in_string[16:24] return [int(red), int(green), int(blue)] if __nam

我将24位长的二进制数切成3个8位长的数字。 下面是我的代码:

def extract_number(number):
    number_in_string = str(number)
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [int(red), int(green), int(blue)]

if __name__ == '__main__':
    print(extract_number(101111010110011011100100))
我从终点站得到的结果是

[10111101, 1100110, 11100100]

问题出现在第二个数字中。当我在字符串[8:16]中对\u进行编号时,它的数字不是8位数长。我在这里使用的切片函数是错误的吗?

您正确地使用了切片函数

In [28]: str(101111010110011011100100)[8:16]
Out[28]: '01100110'
第二个数字的前导零在将字符串转换为整数后被忽略

In [29]: int('01100110')
Out[29]: 1100110
您使用十进制表示的数字,但提到二进制。这有什么原因吗?我想推荐你使用二进制基数

def extract_number(number):
    number_in_string = bin(number)[2:]
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [int(red, 2), int(green, 2), int(blue, 2)]

if __name__ == '__main__':
    print(extract_number(0b101111010110011011100100))
上面的代码输出

[189, 102, 228]

如果您需要这些数字的二进制表示,请使用内置函数

正确使用切片函数

In [28]: str(101111010110011011100100)[8:16]
Out[28]: '01100110'
第二个数字的前导零在将字符串转换为整数后被忽略

In [29]: int('01100110')
Out[29]: 1100110
您使用十进制表示的数字,但提到二进制。这有什么原因吗?我想推荐你使用二进制基数

def extract_number(number):
    number_in_string = bin(number)[2:]
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [int(red, 2), int(green, 2), int(blue, 2)]

if __name__ == '__main__':
    print(extract_number(0b101111010110011011100100))
上面的代码输出

[189, 102, 228]

如果您需要这些数字的二进制表示,请使用内置函数

正确使用切片函数

In [28]: str(101111010110011011100100)[8:16]
Out[28]: '01100110'
第二个数字的前导零在将字符串转换为整数后被忽略

In [29]: int('01100110')
Out[29]: 1100110
您使用十进制表示的数字,但提到二进制。这有什么原因吗?我想推荐你使用二进制基数

def extract_number(number):
    number_in_string = bin(number)[2:]
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [int(red, 2), int(green, 2), int(blue, 2)]

if __name__ == '__main__':
    print(extract_number(0b101111010110011011100100))
上面的代码输出

[189, 102, 228]

如果您需要这些数字的二进制表示,请使用内置函数

正确使用切片函数

In [28]: str(101111010110011011100100)[8:16]
Out[28]: '01100110'
第二个数字的前导零在将字符串转换为整数后被忽略

In [29]: int('01100110')
Out[29]: 1100110
您使用十进制表示的数字,但提到二进制。这有什么原因吗?我想推荐你使用二进制基数

def extract_number(number):
    number_in_string = bin(number)[2:]
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [int(red, 2), int(green, 2), int(blue, 2)]

if __name__ == '__main__':
    print(extract_number(0b101111010110011011100100))
上面的代码输出

[189, 102, 228]

如果需要这些数字的二进制表示,请使用内置函数

尝试按原样返回字符串。将它们转换为整数将从字符串中删除任何前导零(如果存在)。更正了这里的代码-

def extract_number(number):
    number_in_string = str(number)
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [red, green, blue]

if __name__ == '__main__':
    print(extract_number(101111010110011011100100))
输出-

['10111101', '01100110', '11100100']

尝试按原样返回字符串。将它们转换为整数将从字符串中删除任何前导零(如果存在)。更正了这里的代码-

def extract_number(number):
    number_in_string = str(number)
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [red, green, blue]

if __name__ == '__main__':
    print(extract_number(101111010110011011100100))
输出-

['10111101', '01100110', '11100100']

尝试按原样返回字符串。将它们转换为整数将从字符串中删除任何前导零(如果存在)。更正了这里的代码-

def extract_number(number):
    number_in_string = str(number)
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [red, green, blue]

if __name__ == '__main__':
    print(extract_number(101111010110011011100100))
输出-

['10111101', '01100110', '11100100']

尝试按原样返回字符串。将它们转换为整数将从字符串中删除任何前导零(如果存在)。更正了这里的代码-

def extract_number(number):
    number_in_string = str(number)
    red = number_in_string[:8]
    green = number_in_string[8:16]
    blue = number_in_string[16:24]
    return [red, green, blue]

if __name__ == '__main__':
    print(extract_number(101111010110011011100100))
输出-

['10111101', '01100110', '11100100']

嘿我在此处未看到任何更改0_0@Kahsn我不明白你为什么看不到任何变化。再次检查答案。我已经用输出更新了它。注意,我返回的是切片字符串,没有将它们转换为整数。哦,我的错。我完全错过了int()部分。哥们儿,嘿!我在此处未看到任何更改0_0@Kahsn我不明白你为什么看不到任何变化。再次检查答案。我已经用输出更新了它。注意,我返回的是切片字符串,没有将它们转换为整数。哦,我的错。我完全错过了int()部分。哥们儿,嘿!我在此处未看到任何更改0_0@Kahsn我不明白你为什么看不到任何变化。再次检查答案。我已经用输出更新了它。注意,我返回的是切片字符串,没有将它们转换为整数。哦,我的错。我完全错过了int()部分。哥们儿,嘿!我在此处未看到任何更改0_0@Kahsn我不明白你为什么看不到任何变化。再次检查答案。我已经用输出更新了它。注意,我返回的是切片字符串,没有将它们转换为整数。哦,我的错。我完全错过了int()部分。哥达查。