2016-10-12 35 views
0

文字列ポインタを変換しようとしています(文字列^文字列ポインタですか?)を2桁の16進数文字列に変換しようとしています。
私は、sprintfを利用して16進値をバッファに出力し、それをhexdump char配列secretHexにコピーすることで作業しています。
しかし、char配列をStringに変換することができませんでした。変換された文字列をprintfしようとすると 'True'と表示されます。
誰かが最後に何が起こっているのか考えてもらえますか?
私は最初のString^secretKeyとして結果のhexを出力することができます。
ありがとうございます!文字列を16進文字列に変換する

String^ secretKey = "1122334455667788"; 
printf("1. %s\n", secretKey); 
int n = 0; 
char buffer1[17], buffer2[3], secretHex[33]; 

sprintf_s(buffer1, "%s", secretKey); 
while (n < sizeof(buffer1) - 1) { 
    char value = buffer1[n]; 
    sprintf_s(buffer2, "%02x", value); 
    secretHex[2 * n] = buffer2[0]; 
    secretHex[2 * n + 1] = buffer2[1]; 
    n++; 
} 
secretHex[sizeof(secretHex)-1] = '\0'; 
printf("The secretHex key is %s\n", secretHex); 
String^ hex = System::Convert::ToString(secretHex); 
printf("2. %s\n", hex); 

//OUTPUT 
1. 1122334455667788 
The secretHex key is 31313232333334343535363637373838 
2. True 
+2

これはC++ではありません –

+0

私はそれにどのような言語でタグを付ける必要がありますか?私は他の人の仕事を基盤にしており、主にC++について研究してきました。ありがとう! –

+0

Stringを使用する理由^はString ^オブジェクトを取り込み、変換のために戻っています。今はCのような言語で本当に錆びています。長い間それに触れていない。 –

答えて

0

私はC++/CLIの代わりに、C++を扱っています実現した後のstackoverflow上solutionを発見しました。

char* pstr = &secretHex[0]; 
String^ hex = gcnew String(pstr); 
関連する問題