2016-10-12 3 views
0

문자열 포인터를 변환하려고합니다 (문자열 ^이 문자열 포인터입니까?)를 2 자리 16 진수 문자열로 변환하려고합니다.
저는 sprintf를 사용하여 16 진수 값을 버퍼에 출력하고 hexdump char 배열 secretHex에 복사하여 작업합니다.
그러나 char 배열을 String으로 변환 할 수 없어 변환 된 문자열을 printf로 출력 할 때 'True'만 표시됩니다.
누군가가 나에게 무슨 일이 일어나고 있는지 아이디어를 줄 수 있습니까?
결과 문자열을 초기 문자열^secretKey로 인쇄 할 수 있기를 원합니다.
감사합니다.문자열을 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 대신 C의 ++/CLI ++를 처리하고 실현 후 유래에 solution을 발견했다.

char* pstr = &secretHex[0]; 
String^ hex = gcnew String(pstr);