Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何确定数字是32位还是64位整数?_Python_Integer - Fatal编程技术网

在Python中,如何确定数字是32位还是64位整数?

在Python中,如何确定数字是32位还是64位整数?,python,integer,Python,Integer,我想在Python中区分32位整数和64位整数。在C语言中很容易,因为我们可以使用int\u64和int\u32声明变量。但是在Python中,我们如何区分32位整数和64位整数呢?没有必要。解释器在幕后处理分配,根据需要有效地从一种类型升级到另一种类型,而无需您做任何明确的操作。基本上,您不需要这样做。没有理由这么做。如果要处理已知位大小的类型,请查看numpydatatypes 如果要将数据转换为指定格式,请查看该模块。以下来自ipython解释器会话的代码片段指示了测试整数类型的一种方法。

我想在Python中区分32位整数和64位整数。在C语言中很容易,因为我们可以使用
int\u64
int\u32
声明变量。但是在Python中,我们如何区分32位整数和64位整数呢?

没有必要。解释器在幕后处理分配,根据需要有效地从一种类型升级到另一种类型,而无需您做任何明确的操作。

基本上,您不需要这样做。没有理由这么做。如果要处理已知位大小的类型,请查看
numpy
datatypes


如果要将数据转换为指定格式,请查看该模块。

以下来自ipython解释器会话的代码片段指示了测试整数类型的一种方法。注意,在我的系统中,
int
是64位数据类型,
long
是多字类型

In [190]: isinstance(1,int)
Out[190]: True    
In [191]: isinstance(1,long)
Out[191]: False    
In [192]: isinstance(1L,long)
Out[192]: True
另请参见关于
sys.getsizeof
。此函数并不完全相关,因为其中包含一些额外的开销字节。例如:

In [194]: import sys    
In [195]: sys.getsizeof(1)
Out[195]: 24
In [196]: sys.getsizeof(1L)
Out[196]: 28

其他答案中提到的
struct
模块正是您所需要的

一个明确的例子

import struct

struct.pack('qii', # Format string  here.
            100, # Your 64-bit integer
            50, # Your first 32-bit integer
            25) # Your second 32-bit integer

# This will return the following:
'd\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00\x19\x00\x00\x00'

用于格式化字符串。

您为什么想知道?Python的数据类型不直接映射。实际上,我想实现udp跟踪器协议,在该协议中,我需要按照如下方式打包数据[64位数据][32位数据][32位数据],而这并不是Python数据类型的问题。这就变成了一个编码数据以便在线路上传输的问题,这是一个完全不同的问题。。实际上,在c语言中,我们可以通过声明数据类型int_64和int_32的变量来实现它,然后将其合并,我们可以得到上面讨论过的压缩数据。但在python中,我们无法确定整数是32位整数还是64位整数,只能确定数字是整数类型还是长类型。但是我想问的是,我们能找出这个数字是32位整数还是64位整数吗。Python中没有这样的东西。在Python 2中,
int
可以是32位或64位,
long
具有任意长度。你可以确定一个数字是32位还是64位,你可以尝试将一个数字打包成大小合适的二进制格式,但这是一个完全不同的问题。但我需要以[64位数据][32位数据][32位数据]的形式发送数据那么如何在python中实现呢?如果我想检查用户输入的数字是有符号的32位还是无符号的32位呢?但我需要将数据打包为[64位整数][32位整数][32位整数],并将其发送到网络上。那么,在python中应该如何做到这一点呢?@user101847:想要使数据适合某个字节格式,与想要知道标准python类型有多少字节完全不同。对于您的问题,请看struct模块。我同意可以使用struct打包和解包数据,但是我们可以用32位整数打包64位整数吗。据我所知,无法区分64位整数和32位整数。您可以判断该数字是int还是long,但是否有任何内置函数可以判断该数字是32位还是64位整数。在c中,我们只需使用数据类型int\u 64和int\u 32声明变量即可。@user101847:您不需要区分他们。你只需要取整数并把它压缩成你需要的位数。确实,如果需要打包到32位的数字太大而无法放入32位,那么会出现问题,但这并不是因为它“是32位整数”。这是因为数字太大,无法放入32位。