16 진수 문자열을 비트 문자열로 변환

sce

ASN.1 BITSTRING을 만들려고합니다.

시작하려면 출력에 "abcd..."있어야한다고 생각 { 0xab, 0xcd ... }하지만 어디서 시작할지 확실하지 않은 긴 16 진수 문자열 이 있습니다 (한 번 sscanf()에 2 자로?). char[]with 로 잘못 변환 한 후 깨달았 1010101111001101지만 이것은 바이너리 출력이 아니라 문자열로 표시된 바이너리 숫자입니다.

C에서 16 진수 문자열을 이진 문자열로 변환하는 방법이 작동하지 않는 것 같습니다 (res 배열이 비어 있음).

편집 1

의견을 바탕으로 (그리고 훌륭한 답변을보기 전에) 다음을 생각해 냈습니다. 답변을 표시하기 전에 다른 사람이 댓글을 달도록합니다.

char input[] = "abcd";
char output[MAX_LENGTH];

char c[3];
int p = 0;
int b = 0;
while (input[p])
{
    strncpy(c, input + p, 2);
    c[2] = '\0';
    p += 2;
    output[ b++ ] = strtol(c, NULL, 16);
}
다니엘 데이

문자 0- 9A- F(또는 소문자 버전) 만 포함하는 임의 길이의 C 문자열을 가정하면 다음과 같이 쉽게 얻을 수 있습니다.

16 진수의 한 자리는 이진수로 4 비트이므로 두 자리는 단일 바이트를 형성하므로 length / 2완전한 변환 결과를 저장 하려면 바이트 가 필요 합니다.

uint8_t * hexstr_to_bin(char const * str) {
  size_t const length = strlen(str);
  uint8_t * result = malloc((length + 1) / 2);
  // ...
  return result;
}

그런 다음 한 번에 하나씩 문자를 반복하고 이진 표현으로 변환 할 수 있습니다.

size_t it;
for (it = 0; it < length; ++it) {
 char const c = str[it];
 uint8_t const bin = (c > '9') ? (tolower(c) - 'a' + 10) : (c - '0');
 // ...
}

그리고 올바른 위치에 할당하십시오.

if (it % 2 == 0) {
 result[it / 2] = bin << 4;
} else {
 result[it / 2] |= bin;
}

물론 결과 배열에서 값을 정렬 할 수있는 많은 가능성이 있습니다. 위의 코드는 여기에 있습니다. (테스트되지는 않았지만)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

16 진수 문자열을 바이트 배열로 변환

16 진수 문자열을 텍스트로 변환-Swift 3

16 진수 문자열을 이진 문자열로 변환

16 진수 문자열을 2 진 문자열로 변환

BGRA 8 비트 16 진수 문자열을 C # 색상으로 변환

16 진수 문자열 (16 진수)을 2 진 문자열로 변환

16 진수 문자열을 cpp의 문자 배열로 변환

바이트 배열을 16 진 문자열로 변환

16 진 문자열을 바이트 배열로 변환

ASCII 16 진 문자열을 바이트 배열로 변환

16 진수 문자열을 16 진수 정수로 변환

홀수 길이의 Java 문자열을 16 진 바이트 배열로 변환

16 진수 문자열을 C #에서 바이트 배열로 변환

16 진수 값에 대해 문자열을 바이트 배열로 변환

16 진수 문자열 값을 16 진수로 변환

16진수 문자열을 유용한 16진수로 변환

16 진수를 문자열로 변환

16진수를 문자열로 변환

16 진수를 문자열로 변환

16 진수 문자열을 이진수로 변환하고 비트 n C ++로 분리

문자열로 변환하는 바이트 16진수 객체

문자열을 16 진수 코드로 변환 할 때 자바 문자 세트 디코딩 문제

C에서 20 바이트 16 진수 (문자열)를 10 바이트 이진 문자 문자열로 변환

16 진수 문자열을 10 진수 정수로 변환

16 진 문자열을 바이트 []로 변환

C ++ 16 진 문자열을 바이트로 변환

16진수 문자열(WPF TextBox에서)을 바이트로 변환

16 진수 문자열을 바이트로 변환하는 방법

16 진수 값의 문자열을 [] 바이트 표현으로 변환

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관