gpt4 book ai didi

c++ - std::string 到 BYTE[]

转载 作者:行者123 更新时间:2023-11-27 23:57:44 30 4
gpt4 key购买 nike

我的目标是:

BYTE       Data1[]     = {0x6b,0x65,0x79};
BYTE Data2[] = {0x6D,0x65,0x73,0x73,0x61,0x67,0x65};

但我的出发点是:

std::string msg = "message";
std::string key = "key";

我无法从 std::stringBYTE[]

我尝试了以下方法:

std::vector<BYTE> msgbytebuffer(msg.begin(), msg.end());
BYTE* Data1 = &msgbytebuffer[0];

这不会导致编译或运行时错误。但是,最终结果(我将其提供给 winapi 函数 - 加密 api)与我在最上面使用实际字节数组时不同({0x6D,0x65,0x73,0x73,0x61,0x67, 0x65}).

最佳答案

您可以使用 string::c_str()该函数返回一个指向 c 样式字符串的指针,该字符串可以传递给 winapi 函数,例如:

foo(string.c_str());

它实际上做的是返回一个指向包含以 null 结尾的字符序列的数组的指针。


我想 BYTE[] 实际上是一个字符数组。您可以通过执行以下操作将 std::string 分配给 char 数组:

std::string str = "hello";
BYTE byte[6]; // null terminated string;
strcpy(byte, str.c_str()); // copy from str to byte[]

如果要复制末尾不带 0 的 str,请使用 strncpy相反:

BYTE byte[5];
strncpy(byte, str.c_str(), str.length());

关于c++ - std::string 到 BYTE[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41383434/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com