std::vector<unsigned char> Data = example
我在互联网上找到了这个,我认为它将一个未知大小的字节数组写入给定的地址,但我不完全确定。任何人都可以解释这是做什么的吗?
如果这不符合我的想法,有人可以帮我制作一个C ++函数,它将地址和字节作为参数并将它们写在那个地址上,即:
myfunction(0xaddress, {0x10, 0x11, 0x12}); // something like this
答案 0 :(得分:2)
向量的=运算符将复制rvalue的内容(假设rvalue是类型为vector的类型,或者是一个类,它实现了对同一类型向量的转换)。
此处仅复制地址。
答案 1 :(得分:2)
如果要向地址写入x个字节,可以选择多个选项。
void myfunction(void* address, size_t count, const unsigned char data[])
{..}
const unsigned char bytes[] = {0x10, 0x11, 0x12};
myfunction (address, 3, bytes);
其中第二个参数count是数组的长度 或者使用可变函数:
void myfunction(void* address, size_t count, ...)
{..}
myfunction (address, 3, 0x10, 0x11, 0x12);
在所有情况下,您都需要明确地提供字节数;编译器无法从数据中推断出它。
如果你想使用矢量,这是可能的,但是你需要在调用函数之前先填充矢量,这样效率不高。
你不需要自己提供计数的唯一情况是,如果没有字节值为0,那么你可以写
void myfunction(void* address, const char* str)
{..}
myfunction (address, "\x10\x11\x12");
因为你可以使用strlen!
编辑:
此外,std::basic_string<unsigned char>
值得研究。但在这里,给这个包含\x00
值的值也不是一件容易的事。