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

 
Wednesday, April 18, 2007

Perl 펄] signed int를 unsigned형 정수로 변환 캐스팅 함수


펄의 자료형에는 signed, unsigned의 구분이 없지만, 어떤 마이너스 정수 값을, C언어의 unsigned형처럼 변환해 주어야 할 때가 있습니다.

가령 -1을 unsigned형으로 표현하면 4294967295 가 됩니다.

아래 예제의 unsigned32() 같은 비트 연산 함수를 사용하면 구현할 수 있습니다.

음수 -1을, 4294967295(0xFFFFFFFF)로 변환 예제


파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;


# 변환 테스트 시작
print unsigned32(-1), "\n";          # 4294967295
print unsigned32(-2), "\n";          # 4294967294
print unsigned32(1), "\n";           # 1
print unsigned32(0), "\n";           # 0

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

print unsigned32(0x7FFFFFFF - 1), "\n";  # 2147483646
print unsigned32(0x7FFFFFFF + 1), "\n";  # 2147483648


# 변환 함수
sub unsigned32 {
  return $_[0] & 0xFFFFFFFF;
}



# 이 방법은 문자열로 변환 후, 다시 숫자로 출력하는 방법인데
# 좀 비효율적이라 생각됨
my $i = -1;
$i = sprintf("%u\n", $i);
print $i, "\n";



▶▶ Perl 펄] printf 함수 %u %d 의미/뜻, unsigned int, signed int 변환 출력

참고: ▶▶ 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 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top