[editorial] Editorial - A. Endians

  • Toivoa
    Toivoa

    Solved / AC ratio: 35 (77.78%)
    Fastest submission: zolac (5 min.)
    Writer: Toivoa
    A번으로 쉬운 문제를 내려다 생각한게 endian 변환 문제입니다. Being이 올린 뒷이야기에도 나오듯이 출제자는 1분이면 풀릴거라고 생각했었습니다. ㅠㅠ
    간단히 byte 순서를 바꾸면 되는 문제이기 때문에 다음과 같이 풀 수 있습니다.

    unsigned n, res = 0;
    scanf("%u", &n);
    for (int i = 0; i < 4; ++i)
    {
     res = res * 256 + n % 256;
     n /= 256;
    }
    printf("%u\n", res);
    

    만약 bit 연산을 이용한다면 for문을 다음과 같이 변경할 수 있습니다.

     res = ((n & 0xFF000000) >> 24) + ((n & 0xFF0000) >> 8) + ((n & 0xFF00) << 8) + ((n & 0xFF) << 24);
    

    덧 - java에서는 unsigned 자료형을 지원하지 않지만, long (64bit)을 이용해서 푸시면 문제 없이 풀 수 있습니다.

    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]


    16년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.