【发布时间】:2016-10-12 05:49:20
【问题描述】:
我正在尝试将字符串指针(我相信 String^ 是字符串指针??)转换为 2 位 hexdump 字符串。
我的主要工作是利用 sprintf 将十六进制值打印到缓冲区中并将其复制到 hexdump char 数组 secretHex 中。
但是,我无法将 char 数组转换为字符串,当我尝试 printf 转换后的字符串时,它只会显示“真”。
谁能告诉我最后发生了什么?
我希望能够将结果十六进制打印为初始 String^ secretKey。
谢谢!!
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
【问题讨论】:
-
这不是 C++
-
那我应该用什么类型的语言来标记它?我是在别人的工作基础上建立的,我一直主要研究 C++。谢谢!
-
使用 String^ 的原因是因为我正在接受一个 String^ 对象并返回进行转换,而我现在对类 C 语言真的很生疏。好久没碰了。
-
String^是 C++/CLI 或旧的 Managed C++,两者都是在 .NET 框架上运行的 Microsoft 扩展。标准 C++ 不会在这样的数据类型之后使用插入符号。System::Convert::ToString也是一个 .NET 函数。
标签: c++-cli managed-c++ hexdump