我想将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 *
的参数,并假设阵列指向这样的指针有一个空终止(指示结束时,如果该字符串,通常写为一个空字符常数的空字节'\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. 转换的char *为unsigned char *
- 2. 如何将unsigned char *转换为数组<unsigned char> ^?
- 3. 将数组从unsigned char *转换为char *
- 4. 将double转换为unsigned char?
- 5. 将unsigned char转换为NSString
- 6. 转换为unsigned char []
- 7. 如何将unsigned char转换为jbyteArray
- 8. 将vector <unsigned char>转换为const unsigned char *
- 9. 将byte * {aka unsigned char *}'转换为byte [32] {aka unsigned char [32]}
- 10. 如何将const std :: vector <unsigned char>转换为char
- 11. 如何将unsigned char *的内容转换为const char *?
- 12. 如何将块unsigned char *内存转换为[signed] char *内存块?
- 13. C++如何在函数调用中将char *转换为unsigned char *?
- 14. 转换的NSString为unsigned char
- 15. 将unsigned char *数组转换为jObject
- 16. 将unsigned char [10]转换为QBytearray;
- 17. 将Const char *转换为Unsigned long int - strtoul
- 18. 如何将c中的unsigned char *转换为unsigned int *?
- 19. 从char *到unsigned char的C++转换?
- 20. 我如何转换的char *缓冲区为unsigned char缓冲区
- 21. 将std :: shared_ptr <char>转换为std :: shared_ptr <unsigned char>
- 22. 将“unsigned char *”转换为“char *”(和字符串)
- 23. 如何将System :: Char转换为C++ char
- 24. 将char *转换为char? C++
- 25. char!=(signed char),char!=(unsigned char)
- 26. 转换的char *为char&
- 27. char *转换为char *
- 28. 将unsigned int +字符串转换为unsigned char向量
- 29. 将矢量<unsigned char>转换为矢量<unsigned short>
- 30. 将float 32精确地转换为unsigned short或unsigned char
强制转换是通过在C.铸造完成,但是,铸件应避免使用,除非绝对必要的。你为什么需要这样做?你的问题应该提供更多的背景。 – user694733