안경잡이개발자

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
반응형