컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, April 18, 2007

Python 파이썬] signed int를 unsigned형 정수로 변환 캐스팅 함수


Python의 기본적인 정수형은 int인데 이것은 signed 즉 부호 있는 정수이고, 0x7FFFFFFF 를 초과하는 숫자는 자동으로 long형으로 변환됩니다. (파이썬의 long형은 C나 자바와 달리, 무한대의 정수를 표현할 수 있습니다.) 파이썬에는 unsigned형 int는 없습니다.


그런데 C언어에서 가령, -1을 unsigned형 정수로 표현하면 4294967295 가 됩니다.

파이썬에서, -1을 4294967295 로 표현하려면, 비트 연산을 사용하여 변환해 주어야 합니다.


아래의 unsigned32() 라는 함수를 사용하면, signed int 를 unsigned int 로 바꿀 수 있습니다. 이 경우 자동으로 long형으로 변환됩니다. 그래서 실은 signed long 에 해당합니다.


unsigned int 로 캐스팅
파일명: example.py
#!/usr/bin/python
# -*- coding: cp949 -*-


# 32비트 unsigned 형으로 변환하는 함수 정의
def unsigned32(n):
  return n & 0xFFFFFFFFL



# 변환 테스트 시작
print unsigned32(-1)          # 4294967295
print unsigned32(-2)          # 4294967294
print unsigned32(1)           # 1
print unsigned32(0)           # 0

print unsigned32(0xFFFFFFFF)  # 4294967295 (부호없는 32비트 int형의 최대값)
print unsigned32(0x7FFFFFFF)  # 2147483647 (부호있는 32비트 int형의 최대값)

print unsigned32(0x7FFFFFFF - 1)  # 2147483646
print unsigned32(0x7FFFFFFF + 1)  # 2147483648




i = 0x7FFFFFFF
print type(i) # <type 'int'>


# 어떤 경우든, Bigint형 정수인 long형으로 반환됨
i = unsigned32(1)
print type(i) # <type 'long'>

i = unsigned32(0x7FFFFFFF + 1)
print type(i) # <type 'long'>



실용적인 예제: ▶▶ Python 파이썬] 파일의 CRC32 값 구하기: File CRC 계산 소스


참고: ▶▶ C 언어] signed int 를, unsigned int 로 상호 변환, 캐스팅




tag: python
Python | 파이썬

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top