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

 
Previous Post Python 파이썬, 문자열 합치기, 연결 병합; Merge StringJava 자바] 이진파일 쓰기, 바이너리 파일로 저장 예제 소스; Binary File W...파이썬 Python, 헥사 뷰어, 헥사 덤프 만들기 소스 코드; Hex Viewer, Fi...매스매티카 Mathematica, 정규분포, 가우스 분포 랜덤 난수 발생 함수; Norma...매스매티카 Mathematica, 화면(노트북)지우기 명령, 변수 삭제; Clear Not...매스매티카 Mathematica] 랜덤 난수 출력 함수, 정수 실수; Random Rand...C언어] printf 함수 CR-LF 줄바꿈, 개행문자(Newline), 엔터(Enter)...Perl 펄] 헥사 뷰어, 헥사 덤프 만들기 소스 코드; Hex Viewer, File D...Excel 엑셀] 파이값 상수, 원주율 구하기 함수; PI (파이) ConstantJava 자바] 이진파일 읽기, 바이너리 파일 열기; Read Binary File

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

Wednesday, April 18, 2007

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 로 상호 변환, 캐스팅

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

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