我想将包含无符号字符的字符串从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调用)读取数组。上述替代方案似乎更快。