기타
리눅스 C언어 랜덤(무작위) 64 bits 데이터 생성하여 출력하기
안경잡이개발자
2020. 11. 15. 04:28
728x90
반응형
C언어를 이용해 랜덤한 데이터를 생성해 출력하는 방법은 다양하다. 그중에서 한 가지 방법은 다음과 같다.
#include <stdio.h>
#include <stdlib.h> // rand()
#include <time.h> // time()
#include <stdint.h> // uint32_t
uint32_t rand_uint32(void) {
uint32_t r = 0;
for (int i = 0; i < 32; i++) {
r = r * 2 + rand() % 2;
}
return r;
}
// 4바이트를 읽어 버퍼의 특정 인덱스에 삽입
void val32_to_buf(char* buf, uint32_t val, uint32_t index) {
buf[index] = val;
buf[index + 1] = val >> 8;
buf[index + 2] = val >> 16;
buf[index + 3] = val >> 24;
}
int main(void) {
FILE* file;
char buf[8];
srand(time(NULL));
while (1) {
uint32_t r1 = rand_uint32();
uint32_t r2 = rand_uint32();
printf("%u\n", r1);
printf("%u\n", r2);
val32_to_buf(buf, r1, 0);
val32_to_buf(buf, r2, 4);
for (int i = 0; i < sizeof(buf); i++) {
printf("%X", buf[i]);
}
printf("\n");
}
}
컴파일 이후에 실행해 보면 다음과 같이 출력되는 것을 확인할 수 있다. 구체적으로 4 bytes 정수형 데이터 2개를 생성한 뒤에 이를 이용하여 64 bits 데이터를 생성해 낸다.

728x90
반응형