현재 RFID 카드에서 필요한 결과 데이터를 얻는 데 어려움을 겪고 있습니다. 디코딩되었지만 이제 카드 뒷면에서 최종 카드 번호를 얻으려면 몇 가지 작업을 더해야합니다.RFID 데이터 16 진수 수학 문제 디코딩 C++
이상한 값은 E ******** e입니다. 복호화가 0000003048121263b으로 바뀌 었습니다.
이제 원하는 카드 번호를 얻으려면 3 단계가 더 필요합니다.
단계 1) 하위 20 비트를 마스크 처리해야합니다. (어느 것이 나에게 0x1263B를 제공해야합니까?) C++을 사용하는 방법에 대해서는 확신이 없습니다.
단계 2) 하위 패리티 비트 (0x931d 여야 함)를 제거하기 위해 2로 나눕니다. 그리고 다시, 저는 C++에서 이것을 수행하는 방법을 알지 못합니다.
3 단계) 16 진수 값을 10 진수 값 (원하는 카드 번호와 같음)으로 변환하십시오. 이것은 C++을 사용하여이 시점에서 쉽게 이루어져야합니다 - 비록 제가 1 단계에서부터 확인하기는 어렵지만). 복잡하고 그것이 무엇을 수행하지만, 정확한 출력을 제공 이유를 이해하지 못하는 - 정규식이 대부분의 사람들에게하는 것처럼
const char* original = "0x931d";
unsigned long n = std::strtoul(original, nullptr, 16);
이 모든
나에게 보인다.모든 도움을 주시면 감사하겠습니다.
** 결과 **로 설정해야하는 데이터 유형은 무엇입니까? – StealthRT
'result'의 데이터 유형은 최소 20 비트의 부호없는 정수 여야합니다. –