2012-03-25 3 views
0

의 저장 헥사 값 : 나는 문자의 진수를 저장할 How to convert from ASCII to Hex and vice versa?C 질문에 두 번째 대답을 참조하면 문자

[3] 다른 문자의 동등한은 다음과 같이

char *str ="abcd"; 

// I want to get hex[3] of each character in above string and save into the following: 

char str2[4]; // should contain hex values as : \x61 for a,\x62 for b,\x63 for c,\x64 for d 

나는이 작업을 수행 할 수있는 방법 ?

int i; 
char ch; 
char hex[3]; 
for(i=0; i<strlen(str);i++) { 
    ch = charToHex(*(str+i), hex); 
    // now hex contains the first and second hex characters in hex[0] & hex[1] 
    // I need to save them in the first index of str2 
    // e.g. if hex[0] = 7 and hex[1] = f, then str2[0] should be "\x7f" 

    // -> how do I do this part ? 

} 

감사 :

는 내가 지금까지 다음과 같은 시도했다.

+7

이것은 내 코드 쓰기 사이트가 아닙니다. 너 뭐 해봤 니? 어디서 붙어 있니? 또한 문자열''\\ x61 "'은 널 종료 자로 인해'char [4]'에 맞지 않을 수도 있습니다. (나는 아마도 "아마"라고 말합니다. 왜냐하면 당신이 원할 경우 널 터미네이터없이 일할 수 있기 때문에 당신이 의도 한 것이 아닌 어색하고 의심 스럽습니다.) –

+1

응답은 고정 된 순서로 나타나지 않습니다. upvotes 및 downvotes - 그래서 "두 번째 대답은"당신이 말하는거야에 대한 유용한 설명이 아닙니다. 그 아래에있는 "링크"링크를 사용하여 당신이 염두에두고있는 답변에 직접 링크하지 않으시겠습니까? – ruakh

+0

@MarceloCantos 업데이트 된 질문보기 – Jake

답변

1

for loop을 사용하여 문자열의 모든 문자를 반복하고 각 문자에 대해 변환을 적용 할 수 있습니다. C 문자열은 null-terminated입니다.

또한 \x61\x62\x63\x64을 저장하려면 4 개 문자가 충분하지 않습니다 - 당신이 4 * strlen(str) + 1이 필요합니다, 즉 17


을 코드에 대응 :

당신은하지 않습니다 실제로 ch이 필요합니다. function charToHexvoid이며 아무 것도 반환하지 않습니다.

은 간단히 다음과 같이 출력 문자열에 문자를 복사

str2[2*i] = hex[0]; 
str2[2*i+1] = hex[1]; 

다시, 결과 문자열에 null 종결을 설정하는 것을 잊지 마세요.

또한 각 반복에서 strlen을 호출하기 때문에 Schlemiel the Painter algorithm을 작성하고 있습니다.

+0

나는 당신의 해결책을 시도했다; 마지막에 str2가 printf ("% s", str2)를 사용하여 인쇄 될 때 61626364를 출력합니다. 이제 내 질문에 그 문제가 있습니다 : char * str3 = "\ x61 \ x62 \ x63 \ x64", is is 이는 목적이 str1에서 str3 형식으로 변환되기 때문에 우리가 얻은 결과와 동일합니다. – Jake

+0

글쎄, 추가로'\ x'를 원한다면 매 4 번째 문자를''\\ ''로, 매 4 번째 문자 (두 번째 문자부터)를''x' '로 설정할 수 있습니다. 코드는 동일하게 유지됩니다. '2 * i'를'4 * i'로 바꿉니다. – phihag

+0

크기가 변경됩니까? – Jake

관련 문제