javascript中的unsigned char字符串,并在c ++中创建等效的缓冲区

时间:2015-01-21 14:39:31

标签: javascript c++ html5 canvas chromium-embedded

我想将包含无符号字符的字符串从JavaScript发送到c ++(使用Chromium Embedded Framework)。

JavaScript端的unsigned char将是Canvas元素的imageData。

JavaScript代码:

data = con.getImageData(0,0,mycanvas.width,mycanvas.height).data;

var imageDataString = '';
for(var i =4; i< data.length; i += 4)
{
    imageDataString+=String.fromCharCode(data[i])+ String.fromCharCode(data[i+1]) +String.fromCharCode(data[i+2]);
}
//call the native c++ function
window.cpp.func(imageDataString,mycanvas.width,mycanvas.height);

这是我使用c ++

从接收到的字符串创建无符号字符缓冲区的方法
std::string rawString = arguments[0]->GetStringValue().ToString();
unsigned char * raw = new unsigned char[rawString.length()];
memcpy(raw, rawString.c_str(), rawString.length());

但是,在c ++端收到的图像与从JavaScript发送的图像不匹配。

我已经尝试将imageData作为一个整数数组发送,但它非常慢,因为必须在c ++端按索引(使用JavaScript调用)读取数组。上述替代方案似乎更快。

0 个答案:

没有答案