如果要將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
值也不是微不足道的。
你的意思是'std :: vector Data =「example」;' –
Lazylabs
'example'是如何定義的? – trojanfoe
這正是我給的,抱歉不能幫助你更多我不擅長這個記憶寫作業務:(我添加了更多的第一篇文章。 – kvanberendonck