-
변수를 바이트 단위로 설정하기Procademy 2017. 4. 15. 11:22
unsigned int (32bit) 변수를 바이트 단위로 사용하기
- unsigned int 변수 = 0 초기값 가짐- 키보드로 1 ~ 4 의 바이트 위치를 입력 받고- 해당 위치에 넣을 데이터 0 ~ 255 를 입력 받음- 사용자가 입력한 바이트 위치에 해당 값을 넣음- 데이터가 입력 되면 바이트 단위로 쪼개서 출력 & 4바이트 16진수 출력- 기존 데이터는 보존이 되어야 하며- 입력된 바이트 위치의 데이터는 기존 값을 지우고 넣음.* 특정 위치의 바이트를 0으로 설정하는 방법을 알아보던 중 '마스크' 라는 개념이 있다는 걸 알았다.
* 바이트 단위로 데이터를 확인할 수 있는 멋진 함수를 찾았다.
코드
#include <stdio.h> void setByte(unsigned int * number, int location, int data); void printByByte(void * number); int main() { unsigned int number = 0; int byteLocation; int byteData; printf("Byte Location(1~4) : "); scanf("%d",&byteLocation); printf("Data(1~255) : "); scanf("%d",&byteData); setByte(&number,byteLocation,byteData); printByByte(&number); printf("4bytes value : 0x%08x",number); return 0; } void setByte(unsigned int * number, int location, int data) { // clear *number &= ~(0xFF << ((location-1)*8)); // set *number |= data << ((location-1)*8); } void printByByte(void * number) { unsigned char * pt = number; int i; for (i=0; i<4; i++) { printf("%d ",pt[i]); } }
참조자료
http://stackoverflow.com/questions/4439078/how-do-you-set-only-certain-bits-of-a-byte-in-c-without-affecting-the-rest
http://stackoverflow.com/questions/920511/how-to-visualize-bytes-with-c-c
'Procademy' 카테고리의 다른 글
File Packing [패킹 프로그램] (0) 2017.04.24 Sin 그래프 출력해보기 (0) 2017.04.15 변수의 각 비트를 컨트롤 하기 (0) 2017.04.15