Преобразование строки в шестнадцатеричный дамп строки

Я пытаюсь преобразовать указатель строки (я полагаю, что String^ является строковым указателем??) в 2-значную строку шестнадцатеричного дампа.
У меня есть основная часть, работающая с использованием sprintf для печати шестнадцатеричного значения в буфер и его копирования. в шестнадцатеричный массив символов secretHex.
Однако мне не удалось преобразовать массив символов в строку, он отображает только «True», когда я пытаюсь напечатать преобразованную строку.
Может ли кто-нибудь дать мне представление о том, что такое происходит в конце?
Я хотел бы иметь возможность распечатать результат в шестнадцатеричном формате в качестве исходного секретного ключа String^.
Спасибо!!

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

person Joseph Chien    schedule 12.10.2016    source источник
comment
Это не С++   -  person Sean F    schedule 12.10.2016
comment
Каким языком я должен пометить его тогда? Я строю базу на чьей-то работе и в основном занимаюсь исследованиями C++. Спасибо!   -  person Joseph Chien    schedule 12.10.2016
comment
Причина использования String^ заключается в том, что я беру объект String^ и возвращаю его для преобразования, и теперь я действительно ржавый с C-подобным языком. Давно не трогал.   -  person Joseph Chien    schedule 12.10.2016
comment
String^ — это либо C++/CLI, либо более старый Managed C++, оба из которых являются расширениями Microsoft, работающими на платформе .NET. Стандартный C++ никогда не использует знак вставки после такого типа данных. System::Convert::ToString также является функцией .NET.   -  person Wyzard    schedule 12.10.2016


Ответы (1)


Я нашел решение на stackoverflow после того, как понял, что имею дело с C++/CLI вместо C++.

char* pstr = &secretHex[0];
String^ hex = gcnew String(pstr);
person Joseph Chien    schedule 12.10.2016