바이너리 버퍼에서 변수를 초기화하는 올바른 방법은 무엇입니까?

user2448431

프로토콜을 통해 패킹 된 이진 데이터 (즉, 변수가 올바르게 정렬되지 않은 경우)를받는 상황을 자주 접하고 데이터는 일반적으로 std :: string, std :: vector 또는 기타 이러한 컨테이너로 제공됩니다. .

내 질문은 그러한 데이터의 압축을 푸는 모범 사례는 무엇입니까? 나는 일반적으로 다음과 같은 것을 수행합니다.

int32_t x = *((int32_t*)charPtr);

또는 반복자의 경우

int32_t x = *((int32_t*)(&(*itt)));

그러나 이것들은 정말 해킹처럼 느껴지고 템플릿 함수로 래핑 될 수 있지만 컴파일러에게 원하는 것을 알려주는 더 직접적인 방법이 없습니까?

배리

정의되지 않은 동작을 피하는 올바른 방법은 다음과 같습니다.

int32_t x;
memcpy(&x, charPtr, sizeof(x));

함수 템플릿으로 래핑 할 수 있습니다.

template <class T,
    std::enable_if_t<std::is_trivially_default_constructible<T>::value &&
        std::is_trivially_copyable<T>::value, int> = 0>
T unpack(unsigned char* p) {
    T val;
    memcpy(&val, p, sizeof(val));
    return val;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

iOS에서 Swift Realm DB를 다시 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

커서를 올바르게 초기화하는 방법은 무엇입니까?

분류에서Dev

C ++ 11에서 데이터 멤버를 올바르게 초기화하는 방법은 무엇입니까?

분류에서Dev

QList를 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

Vue.js 3 내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

생성자에서 초기화를 올바르게 관리하는 방법은 무엇입니까?

분류에서Dev

이것이 변수를 초기화하는 올바른 방법입니까?

분류에서Dev

C에서 함수 포인터를 포함하는 구조체를 만들고 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

조명기에서 구조화 된 데이터를 반환하는 올바른 방법은 무엇입니까?

분류에서Dev

고정 된 크기의 청크로 바이너리 파일을 읽고 모든 청크를 Vec에 저장하는 올바른 방법은 무엇입니까?

분류에서Dev

/ usr / local / bin에서 바이너리 별칭을 지정하는 올바른 방법은 무엇입니까?

분류에서Dev

Docker 컨테이너에서 이름 확인을 수정하는 올바른 방법은 무엇입니까?

분류에서Dev

변수에서 약속 데이터를 가져 오는 올바른 방법은 무엇입니까?

분류에서Dev

C ++에서 객체 벡터를 올바르게 초기화하는 방법은 무엇입니까?

분류에서Dev

Swift에서 UnsafePointer를 올바르게 초기화하는 방법은 무엇입니까?

분류에서Dev

Objective-C에서 전역 변수를 선언하는 올바른 방법은 무엇입니까?

분류에서Dev

JS에서 올바른 변수를 확인하는 방법은 무엇입니까?

분류에서Dev

C ++에서 MNIST 바이너리 변환기를 이해하는 방법은 무엇입니까?

분류에서Dev

double 변수에 포함 된 올바른 자릿수를 인쇄하는 방법은 무엇입니까?

분류에서Dev

매개 변수를 콜백 함수에 전달하는 올바른 방법은 무엇입니까?

분류에서Dev

null 포인터 참조를 얻지 않도록 개체 배열에서 개체를 초기화하는 올바른 방법은 무엇입니까?

분류에서Dev

Crypto ++에서 ECDSA를 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

Go에서 SIUSBXP를 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

expressjs에서 Nodemailer를 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

C #에서 올바른 BackGroundImage를 설정하는 방법은 무엇입니까?

분류에서Dev

PHP에서 올바른 경로를 설정하는 올바른 방법은 무엇입니까?

분류에서Dev

NextJs에 Sass를 삽입하는 올바른 방법은 무엇입니까?

분류에서Dev

JavaScript 생성 버튼에서 함수를 실행하는 올바른 방법은 무엇입니까?

Related 관련 기사

  1. 1

    iOS에서 Swift Realm DB를 다시 초기화하는 올바른 방법은 무엇입니까?

  2. 2

    커서를 올바르게 초기화하는 방법은 무엇입니까?

  3. 3

    C ++ 11에서 데이터 멤버를 올바르게 초기화하는 방법은 무엇입니까?

  4. 4

    QList를 초기화하는 올바른 방법은 무엇입니까?

  5. 5

    내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

  6. 6

    Vue.js 3 내 숫자 변수를 초기화하는 올바른 방법은 무엇입니까?

  7. 7

    생성자에서 초기화를 올바르게 관리하는 방법은 무엇입니까?

  8. 8

    이것이 변수를 초기화하는 올바른 방법입니까?

  9. 9

    C에서 함수 포인터를 포함하는 구조체를 만들고 초기화하는 올바른 방법은 무엇입니까?

  10. 10

    조명기에서 구조화 된 데이터를 반환하는 올바른 방법은 무엇입니까?

  11. 11

    고정 된 크기의 청크로 바이너리 파일을 읽고 모든 청크를 Vec에 저장하는 올바른 방법은 무엇입니까?

  12. 12

    / usr / local / bin에서 바이너리 별칭을 지정하는 올바른 방법은 무엇입니까?

  13. 13

    Docker 컨테이너에서 이름 확인을 수정하는 올바른 방법은 무엇입니까?

  14. 14

    변수에서 약속 데이터를 가져 오는 올바른 방법은 무엇입니까?

  15. 15

    C ++에서 객체 벡터를 올바르게 초기화하는 방법은 무엇입니까?

  16. 16

    Swift에서 UnsafePointer를 올바르게 초기화하는 방법은 무엇입니까?

  17. 17

    Objective-C에서 전역 변수를 선언하는 올바른 방법은 무엇입니까?

  18. 18

    JS에서 올바른 변수를 확인하는 방법은 무엇입니까?

  19. 19

    C ++에서 MNIST 바이너리 변환기를 이해하는 방법은 무엇입니까?

  20. 20

    double 변수에 포함 된 올바른 자릿수를 인쇄하는 방법은 무엇입니까?

  21. 21

    매개 변수를 콜백 함수에 전달하는 올바른 방법은 무엇입니까?

  22. 22

    null 포인터 참조를 얻지 않도록 개체 배열에서 개체를 초기화하는 올바른 방법은 무엇입니까?

  23. 23

    Crypto ++에서 ECDSA를 사용하는 올바른 방법은 무엇입니까?

  24. 24

    Go에서 SIUSBXP를 사용하는 올바른 방법은 무엇입니까?

  25. 25

    expressjs에서 Nodemailer를 사용하는 올바른 방법은 무엇입니까?

  26. 26

    C #에서 올바른 BackGroundImage를 설정하는 방법은 무엇입니까?

  27. 27

    PHP에서 올바른 경로를 설정하는 올바른 방법은 무엇입니까?

  28. 28

    NextJs에 Sass를 삽입하는 올바른 방법은 무엇입니까?

  29. 29

    JavaScript 생성 버튼에서 함수를 실행하는 올바른 방법은 무엇입니까?

뜨겁다태그

보관