목록IT/엔디언 행진곡 (5)
And Brain said,

엔디언(Endian) 행진곡0. 멀티바이트의 질서있는 행진 1. 빅이냐 리틀이냐 그것이 문제로다2. Rust로 다시 쓰여지다3. 제1장: Network4. 제2장: FIle5. 행진이 끝나고예제 코드 엔디언은 또한 파일 시스템에서도 중요한데, 바이너리 데이터를 저장하고 읽어올 때는 엔디언을 정확히 알고 있어야 합니다. 엔디언이 다른 시스템에서 파일을 읽거나 쓰려고 할 때 엔디언 변환을 올바르게 하지 않는다면, 데이터가 올바르게 해석되지 않을 수 있습니다 먼저 텍스트 파일안의 숫자 데이터를 읽어서 빅엔디언 형식으로 변환한 후, 다른 파일에 빅엔디언 형식의 바이트를 포함하는 바이너리 파일을 만드는 작업을 수행해봅시다.use std::fs::File;use std::io::{self, BufRead, Rea..

엔디언(Endian) 행진곡0. 멀티바이트의 질서있는 행진 1. 빅이냐 리틀이냐 그것이 문제로다2. Rust로 다시 쓰여지다3. 제1장: Network4. 제2장: FIle5. 행진이 끝나고예제 코드 엔디언은 또한 네트워크 통신에서도 중요한 역할을 합니다. 대부분의 네트워크 프로토콜은 빅 엔디언, 또는 '네트워크 바이트 오더'를 사용합니다. 먼저, 네트워크 패킷을 다루는 경우에는 고수준의 API 기능들로는 충분하지 않을 수 있습니다. 저수준의 네트워크 프로그래밍에서는 엔디언에 대한 이해가 필수적입니다. 이때 엔디언 변환이 필요하게 됩니다. Rust로 작성된 간단한 패킷 구조체를 생성하고, 이를 바이트 배열로 변환한 다음 다시 원래의 구조체로 복원해 보겠습니다.use byteorder::{BigEndian..

엔디언(Endian) 행진곡0. 멀티바이트의 질서있는 행진 1. 빅이냐 리틀이냐 그것이 문제로다2. Rust로 다시 쓰여지다3. 제1장: Network4. 제2장: FIle5. 행진이 끝나고예제 코드 이제 Rust를 이용해 실제로 엔디언 변환을 해보도록 합시다. Rust에서는 'byteorder' 라는 crate를 이용해 간편하게 엔디언 변환을 할 수 있습니다. 이 crate를 사용하여, 쉽게 데이터 바이트의 순서를 변경해보도록 합시다. 먼저, Cargo.toml 파일에 라이브러리를 추가해줍시다.[dependencies]byteorder = "1.4.3" 자, 이제 간단한 엔디언 변환 예제를 작성해봅시다.use byteorder::{BigEndian, ByteOrder, LittleEndian};fn m..

엔디언(Endian) 행진곡0. 멀티바이트의 질서있는 행진 1. 빅이냐 리틀이냐 그것이 문제로다2. Rust로 다시 쓰여지다3. 제1장: Network4. 제2장: FIle5. 행진이 끝나고예제 코드> '빅 엔디언'과 '리틀 엔디언'은 데이터를 메모리에 어떻게 배치할지를 결정하는 엔디언 방식의 두 가지 주요 유형입니다. 먼저 빅 엔디언과 리틀 엔디언의 차이점을 다시 한 번 살펴볼까요?빅 엔디언 방식을 먼저 살펴봅시다. 이 방식에서는 가장 중요한 바이트(Most Significant Byte, MSB)가 낮은 메모리 주소에 위치하게 됩니다. 이것은 숫자를 읽거나 쓸 때 일반적으로 사용하는 방식과 유사합니다. 즉, 12345678이라는 숫자를 읽을 때 1이 가장 먼저 오는 것처럼, 빅 엔디언 방식에서도 가장..

엔디언(Endian) 행진곡0. 멀티바이트의 질서있는 행진 1. 빅이냐 리틀이냐 그것이 문제로다2. Rust로 다시 쓰여지다3. 제1장: Network4. 제2장: FIle5. 행진이 끝나고예제 코드 여기 멀티바이트 데이터들이 행진을 준비하고 있습니다. 그들은 메모리 도로 위에 서서, 시작을 기다리고 있습니다. 한쪽 끝에서 다른 쪽 끝까지, 그런데 우리는 문득 궁금증이 생깁니다. 이들은 대체 어떤 순서로 메모리에 위치할까요? 엔디언(Endianness, 줄여서 Endian)은 바로 이 데이터 바이트들이 어떤 순서로 메모리에 위치할지를 결정하는 규칙입니다.엔디언은 크게 두 가지 유형이 있습니다. 빅 엔디언과 리틀 엔디언입니다. 두 방식 모두 동일한 멀티바이트 데이터에 적용되지만, 데이터 바이트들이 메모리에..