이 문제에 대한 여러 가지 해결책을 찾았지만 그 중 일부는 작동하지 않으며, 많은 부분이 다소 해킹되고 비효율적으로 보입니다. 기본적으로 원시 데이터로 변환하고자하는 16 진수 문자열 (예 : "55AA 41 2A 00 94 55AA BB BB 00 FF")이 있습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?16 진수 문자열을 데이터로 변환
업데이트 : : Vicky의 솔루션은 저에게 효과적 이었지만, 중간에 공백이없고 스타일을 약간 변경 한 16 진수 문자열로 작동하도록 변경했습니다.
int i = 0;
char *hexString = "55AA412A009455AABBBB00FF"
char *hexPtr = hexString;
unsigned int *result = calloc(strlen(hexString)/2 + 1, sizeof *result);
while (sscanf(hexPtr, "%02x", &result[i++])) {
hexPtr += 2;
if (hexPtr >= hexString + strlen(hexString)) break;
}
return result;
당신이 명확히 수, 곧, 몇 가지 방법에 당신은 시도하고 컨텍스트의 유형이 코드에서해야 적당한? – nielsj
(아마도 가장 좋지는 않지만 가장 짧은 것은 아닙니다.) [code golf - hex에서 (raw) 이진 변환] 가능한 복제본 (http://stackoverflow.com/questions/795027/code-golf-hex-to-raw - 이진 변환) – zaf
zaf, 정확히 내가 원했던 것입니다. 나는 이것이 어떤면에서 그것의 중복이 될 것이라고 생각한다. – AriX