비트 필드를 사용하지 않고 바이트에서 니블을 읽고 쓸 수있는 쉬운 방법이 있습니까? 항상 두 니블을 모두 읽어야하지만 각 니블은 개별적으로 작성해야합니다.C/C++에서 니블 (비트 필드 제외) 읽기/쓰기
감사합니다.
비트 필드를 사용하지 않고 바이트에서 니블을 읽고 쓸 수있는 쉬운 방법이 있습니까? 항상 두 니블을 모두 읽어야하지만 각 니블은 개별적으로 작성해야합니다.C/C++에서 니블 (비트 필드 제외) 읽기/쓰기
감사합니다.
사용 마스크 :
char byte;
byte = (byte & 0xF0) | (nibble1 & 0xF); // write low quartet
byte = (byte & 0x0F) | ((nibble2 & 0xF) << 4); // write high quartet
이 내부 매크로를 넣어 할 수 있습니다.
작업 할 수있는 가장 작은 단위는 싱글 바이트입니다. 비트를 관리하려면 bitwise operators을 사용해야합니다.
당신은 편의를 위해 자신에게 의사 노동 조합을 만들 수 있습니다
ByteNibbles byteNibbles(0xA, 0xB);
BYTE data = byteNibbles.data;
하나의 멤버와의 결합은 합집합의 가치가 없습니다 ... –
개념을 강화하기위한 의사 연합입니다. 나는 두 개의 버그가있는 매크로를 선호한다. – DanDan
나는 매크로와 의사 노조 모두에 인라인 함수를 선호한다. ;-) –
기존 값을 업데이트하는 경우, 당신은 바이트'에 니블을 취소해야합니다
이처럼 사용 '새로운 값으로 orring하기 전에. 'byte = (byte & ~ 0xF) | (nibble1 & 0xF)'이며, 상위 니블에서도 마찬가지입니다. –
은 변수 바이트의 이름을 지정하지 않습니다 – OlimilOops
@Mike Seymour : 네 말이 맞아요, 나는 답을 편집합니다. –