2012-12-29 2 views
2

파이썬에서 32 비트와 64 비트 정수를 구별하고 싶습니다. C에서는 int_64int_32을 사용하여 변수를 선언 할 수 있으므로 매우 쉽습니다. 그러나 파이썬에서 어떻게 32 비트 정수와 64 비트 정수를 구별 할 수 있습니까?파이썬에서 숫자가 32 비트 또는 64 비트 정수인지 확인하는 방법은 무엇입니까?

+2

왜 알고 싶습니까? 파이썬의 데이터 유형은 직접 매핑되지 않습니다. –

+0

실제로 나는 다음과 같이 데이터를 압축해야한다고 말하는 udp 추적기 프로토콜을 구현하려고합니다. [64 비트 데이터] [32 비트 데이터] [32 비트 데이터] – user101847

+1

파이썬의 질문이 끝나지 않습니다. 데이터 유형. 이는 전선에서 전송할 데이터를 인코딩하는 문제가됩니다. 이는 상당히 다른 문제입니다. –

답변

4

다른 답변에서 언급 한 모듈은 필요한 것입니다.

명확한 예.

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' 

documentation 서식 지정 문자열의 경우.

6

필요 없습니다. 통역사는 배후에서 배정을 처리하여 명시 적으로 아무 것도하지 않고도 필요에 따라 한 유형에서 다른 유형으로 효과적으로 홍보합니다.

+0

하지만 [64 비트 데이터] [32 비트 데이터] [32 비트 데이터]로 데이터를 전송해야합니다. 어떻게 파이썬에서 수행 할 수 있습니까? – user101847

4

기본적으로 그렇지 않습니다. 이유가 없습니다. 알려진 비트 크기의 유형을 처리하려면 numpy 데이터 유형을 참조하십시오.

데이터를 데이터를 지정된 형식으로 지정하려면 struct 모듈을 확인하십시오.

+0

하지만 데이터를 [64 비트 정수] [32 비트 정수] [32 비트 정수]로 묶어 네트워크에 보내야합니다. 그렇다면 이것을 파이썬으로 어떻게 처리해야할까요? – user101847

+0

@ user101847 : * 데이터를 특정 바이트 형식에 맞게 만들려면 표준 파이썬 형식의 바이트 수를 알고 싶다는 것과 완전히 다릅니다. 귀하의 질문에 대해서는 struct 모듈을보십시오. – BrenBarn

+0

+1 for'struct' – anon

0

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 
관련 문제