有没有办法将char[]
转换为unsigned char*
?
char buf[50] = "this is a test";
unsigned char* conbuf = // what should I add here
答案 0 :(得分:7)
虽然技术上可能不是100%合法,但这将有效reinterpret_cast<unsigned char*>(buf)
。
这不是100%在技术上合法的原因是由于第5.2.10节expr.reinterpret.cast
项目符号7。
指向对象的指针可以显式转换为指向不同类型对象的指针。原始类型产生原始指针值,这种指针转换的结果是未指定的。
我认为*reinterpret_cast<unsigned char*>(buf) = 'a'
未指定,但*reinterpret_cast<char*>(reinterpret_cast<unsigned char*>(buf)) = 'a'
没问题。
答案 1 :(得分:4)
刚投吧?
unsigned char *conbuf = (unsigned char *)buf;