Python does not convert long to int
我有一个列表,通过连接两个字符串,然后通过以下方式将它们转换为整数:
1 2 | for i in xrange(0, len(FromBus[1][0])): FromBus[1][0][i] = int(str(FromBus[1][0][i]) + str(ToBus[1][0][i])) |
列表如下:
1 2 | >>> FromBus[1][0][1:5] [3724637724L, 3724837324L, 3724837707L, 3724837707L] |
号
清单是由长的
1 2 | >>> type(FromBus[1][0][1]) <type 'long'> |
由于在不同环境中对数据进行后处理,我试图将长类型转换为整数类型,因此需要在每个变量的末尾删除"l"。但是,我发现的所有方法都失败了:
1 2 3 4 5 6 7 8 | >>> int(FromBus[1][0][1]) 3724637724L >>> [int(i) for i in FromBus[1][0]][1:5] [3724637724L, 3724837324L, 37248377071L, 37248377072L] >>> map(int, FromBus[1][0][1:5]) [3724637724L, 3724837324L, 37248377071L, 37248377072L] |
。
我的问题是,问题的根源是什么?我可以很容易地把它们转换成字符串。但是,我如何仍然可以将long转换为int,而不必使用through string方法(将long转换为字符串,删除每个字符串末尾的最后一个字符,然后再将其转换回integer)。
对于我来说,足够的解决方案是,在编写的时候,将csv的编写函数修改为删除l。
如果值太长而无法放入
事实上,python
1 2 3 4 5 6 7 8 9 10 11 12 | Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type"copyright","credits" or"license()" for more information. >>> x = int >>> x <type 'int'> >>> x = long >>> x <type 'long'> >>> print x <type 'long'> >>> |
所以:
1 2 3 | import struct my_val, = struct.unpack('>d', my_string_part_if shorter_than_4Bytes_fill_\x00)) |
号
另一种方式:
1 2 3 4 5 | >>> import binascii >>> print int(binascii.hexlify("test"),16) 1952805748 >>> **#be carefull always length 4 bytes** |