임베디드 프로그래밍을 하다 보면 레지스터 등의 설정을 2의 보수로 해야 하는 경우가 많이 있습니다. int 값을 2의 보수 헥사값으로 표현하거나 또는 2의 보수 헥사 값으로부터 int 값을 구하는 경우 저는 주로 Python bitstring 모듈을 사용하곤 합니다.

대부분의 파이썬 모듈이 그렇듯이 bitstring 모듈 역시도 pip를 통해 아래와 같이 설치할 수 있습니다.

pip install bitstring

사용은 아래와 같이 bitstring 모듈을 import 를 하고~

from bitstring import Bits

헥사값을 넣어 줍니다.

num = Bits(hex="FFD856")

int 값을 구하기 위해서는 int 멤버 변수 값을 확인하면 되고 아래 예를 보면 -10154 임을 알 수 있습니다.

hex 값을 구하기 위해서는 hex 멤버 변수 값을 확인하면 ffd856 임을 알 수 있고~ bin 값을 구하기 위해서는 bin 멤버 변수 값을 확인하면 "111111111101100001010110' 임을 알 수 있습니다.



MATLAB 의 format 명령을 사용하면 명령 창의 출력 표시 형식을 rat, hex, short, long 등으로 변경할 수 있습니다. 공학을 하다보면 숫자를 표현할때 단위에 따라 kilo, giga, mega 등과 같은 단위를 사용하곤 하고 이런 형식으로 바꾸기 위한 방법을 찾아보니 아래 주소에서 괜찮은 코드를 발견해서 소개합니다.

https://kr.mathworks.com/matlabcentral/fileexchange/53886-scientific-prefix-to-number

위 주소에서 다운로드 버튼을 누르면 num2sci.zip 파일을 다운로드 할 수 있고~

num2sci.zip 파일을 압축 해제 한 후에 해당 폴더를 path 에 추가하면 MATLAB 의 아무 디렉토리에서나 사용할 수 있습니다. 폴더를 MATLAB path 에 추가하는 방법은 아래 주소의 글들을 참조하시기 바랍니다.

http://iamaman.tistory.com/1829

http://iamaman.tistory.com/569

http://iamaman.tistory.com/2629

num2sip.m, num2bip.m 함수를 사용할 수 있고 각각 doc num2sip, doc num2bip 이라고 하면 해당 함수에 대한 내용을 보실 수 있습니다.

num2sip 함수는 숫자를 metric prefixed string 으로 변경하는 함수인데 ~ 예를 들어 1000 이라는 숫자를 표현할때는 아시다시피 1 kilo 라고 표현하고 아래와 같이 MATLAB 명령창에 타이핑 하면 됩니다.

>> num2sip(1000)

ans =

1 k

>> num2sip(1e6)

ans =

1 M

num2sip 함수에 대한 설명을 보시면 아시겠지만 아래와 같이 4개 까지 인자를 받을 수 있습니다.

str = num2sip(num, sgf, pfx, trz)

num 은 숫자, sgf 는 표현할 숫자의 자리수, pfx 는 단위의 Full name 으로 할지 Symbol 로 할지 trz 는 자리수를 맞추기 위한 0을 넣을지 말지에 대한 결정입니다.

아래와 같은 예로 사용하시면 됩니다.

>> a=128e6

a =

128000000

>> num2sip(a, [], true, true)

ans =

128.00 mega



+ Recent posts