2014-06-16 43 views
-2

如何刪除C++中前3個字節的緩衝區?如何刪除前3個字節的緩衝區

在JavaScript的我就簡單:

var hashed = new Buffer(packet, "hex"); 

// remove first 3 bytes from packet 
hashed = hashed.slice(3); 

實施例:

01 02 03 04 05 06 

輸出:

04 05 06 

我的C++代碼:

size_t size = node::Buffer::Length(packet->ToObject()); 
char *buf = node::Buffer::Data(packet->ToObject()); 

Node.js的代碼(使用):

var addon = require('./build/Release/krypto'); 

console.log(addon.encrypt(new Buffer("3A00F063F9757D6FE7ABD8ABCE8387C8C14F43CDE1DAA64D195BB8", "hex"))); 
+0

你的緩衝區是什麼樣的? – pezcode

+0

在你的C++程序中,直到修剪的代碼如何? –

+0

我沒有得到反對票:\用代碼更新了我的問題。 – majidarif

回答

1

卸下從緩衝器的東西是一個昂貴的操作。通常,緩衝區保持不變,某種指針或索引標記用於標記緩衝區的當前邏輯開始。根據你的緩衝區是一個數組,一個std :: vector或者完全不同的東西,這可能是你的數組類型的const TYPE*,或者簡單的size_t索引或者一些std::vector<TYPE>::const_iterator

+0

我真的很陌生,並且想問你是否可以闡述你的答案。 – majidarif

+0

如果你有'char * buf',那麼'*(buf + 3)'或'buf [3]'就是你需要的位置的字節。現在,您只需要一種方法來使用變量而不是固定的3,並且您可以在不更改的情況下開始讀取緩衝區。 – nvoigt