2

私はライブラリを使用していて、それらの定義を保持したいのですが、それらを一緒に機能させる必要があるため、この変換が必要です。

ので、私は持っています

functionX(uint8 *src, uint16 nSrcLen){
  write(src);
}

write(const char msg){}

助けてくれてありがとう;)

編集:追加情報

functionXとwriteは、とにかく可能であれば、このままにしておく必要があります。しかし、これに関係なく、私はより良い解決策に興味があります。

srcはnullバイトを伝送します

編集:書き込み、以前の使用方法

std::string hex_chars;
std::getline(std::cin, hex_chars);
std::istringstream hex_chars_stream(hex_chars);

unsigned int ch;
while (hex_chars_stream >> std::hex >> ch)
{
 write(ch);
}

現在、16進変換の必要はありませんが、このストリーム構成を使用する必要があると思います。

編集:現在のソリューション

for(uint16 i = 0; i < nSrcLen; i++)
{
    write(reinterpret_cast<unsigned char*>(src)[i]);
    //printf("%d",reinterpret_cast<unsigned char*>(src)[i]);    
}

今のところ、私のために働いています-みんなありがとう!

4

1 に答える 1

5

ポインターの型を変換するには、ポインターをある型から別の型にキャストするだけです。

例えば、

uint8 *uint8_pointer = ?;

// C style cast
const char *char_pointer = (char*)uint8_pointer;

// newer C++ style cast syntax
const char *char_pointer2 = reinterpret_cast<char*>(uint8_pointer); 

逆の方法でも実行できます。

char *char_pointer = ?;
uint8 *uint8_pointer = reinterpret_cast<uint8*>(char_pointer);

関数には、次のものを使用できます。

functionX(uint8 *src, uint16 nSrcLen){
  write(reinterpret_cast<char*>(src));
}
void write(const char* msg);
于 2012-09-06T09:34:00.440 に答える