Я пытаюсь преобразовать указатель строки (я полагаю, что 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
String^
— это либо C++/CLI, либо более старый Managed C++, оба из которых являются расширениями Microsoft, работающими на платформе .NET. Стандартный C++ никогда не использует знак вставки после такого типа данных.System::Convert::ToString
также является функцией .NET. - person Wyzard   schedule 12.10.2016