将char数组转换为unsigned char *

时间:2011-02-09 11:47:24

标签: c++ type-conversion

有没有办法将char[]转换为unsigned char*

char buf[50] = "this is a test"; 
unsigned char* conbuf = // what should I add here

2 个答案:

答案 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;