unsigned char *를 char *로 변환하고 값을 출력 한 다음 char *을 unsigned char *로 다시 변환하려고합니다. 어떻게해야합니까?unsigned char *를 char *로 변환하는 방법 *
0
A
답변
0
unsigned char x = 0xFF;
unsigned char *p = &x;
printf("Signed value - %d\n", *((char *)p));
printf("Unsigned value - %u\n", *p);
하지만 가능한 경우 그러한 주조는 피해야한다는 의견에 동의합니다.
+0
나는 downvote에 대한 이유를 얻지 못했습니다. 설명 할 수 있니? – dkolmakov
2
바이트 배열은 char
, unsigned char
또는 signed char
의 배열로 해석 할 수 있습니다. C 라이브러리에서
대부분의 문자열 함수 유형 char *
또는 const char *
의 인수를하고, 배열은 지적 가정 (널 (NULL) 종료를 같은 포인터에 의해 문자열이, 종래 null 문자 상수로 작성하면 끝을 나타내는 null 바이트 '\0'
).
배열에 unsigned char
이 널 종결자인 경우 해당 라이브러리 함수에 전달할 때 해당 주소를 (char *)
또는 (const char *)
으로 캐스팅하지 않아도됩니다. 예를 들어
:
#include <stdio.h>
#include <string.h>
int main(void) {
unsigned char buf[256];
char *p;
for (size_t i = 0; i < sizeof(buf); i++) {
buf[i] = (i + 1) & 255;
}
printf("length of array: %d\n", (int)strlen((char *)buf));
printf("complete character set: >>>%s<<<\n", (char *)buf);
p = (char *)buf;
printf("char type is %s by default\n", p[128] < 0 ? "signed" : "unsigned");
return 0;
}
관련 문제
- 1. unsigned char *를 unsigned char *로 복사하십시오.
- 2. char *를 char []로 변환하는 방법
- 3. unsigned char *의 내용을 const char *로 변환하는 방법은 무엇입니까?
- 4. unsigned long을 char *로 변환합니다.
- 5. QByteArray가 unsigned char *로 변환됩니다.
- 6. char/*를 wchar_t/*로 변환하는 방법 - 그러나
- 7. C에서 u_char *를 char []로 변환하는 방법
- 8. char *를 2d char 배열로 변환하는 방법
- 9. unsigned char *를 istream으로 사용하십시오.
- 10. unsigned char *를 long으로 변환
- 11. Swig에게 'unsigned char *'로 'u_char *'를 대하는 방법
- 12. char *를 unsigned int로 C 프로그래밍에서 win32로 변환하는 방법
- 13. std :: vector <char*>을 char **로 변환하는 방법?
- 14. wchar_t **를 char **로 변환하는 방법은 무엇입니까?
- 15. char *를 PRUnichar로 변환하는 방법 *
- 16. CORBA IDL에서 C++로 - char 대 unsigned char?
- 17. ANSI-C를 unsigned int *에서 char *로 변환하는 방법은 무엇입니까?
- 18. System :: String을 unsigned char *로 변환하려면 어떻게해야합니까?
- 19. 16 진수 문자열을 unsigned char []로 변환
- 20. char 배열을 unsigned int로 변환하는 방법은 무엇입니까?
- 21. openCL에서 char *를 int *로 캐스팅하는 방법
- 22. Cython에서 char **을 const char **로 변환하는 방법?
- 23. C + +에서 char *로 문자열을 변환하는 방법?
- 24. unsigned int 배열에서 unsigned char 배열로 변환
- 25. char *에서 unsigned char 로의 C++ 변환?
- 26. 부호없는 char std :: vector에서 unsigned char []?
- 27. NSData to unsigned char *
- 28. #define as unsigned char
- 29. Mat to unsigned char *
- 30. CString을 const char *로 변환하는 방법?
강제 변환은 캐스팅 절대적으로 필요한 경우가 아니면 피해야한다, C에서 캐스팅에 의해 수행하지만된다. 왜 이럴 필요가 있니? 귀하의 질문은 더 많은 맥락을 제공해야합니다. – user694733