【问题标题】:Convert String into hexdump of String将字符串转换为字符串的十六进制转储
【发布时间】: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


【解决方案1】:

在意识到我正在处理 C++/CLI 而不是 C++ 之后,我在 stackoverflow 上找到了 solution

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2018-01-31
    • 2018-01-26
    • 1970-01-01
    相关资源
    最近更新 更多