2014-06-16 26 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