【问题标题】:Node Buffer to char array节点缓冲区到 char 数组
【发布时间】:2015-01-27 13:17:40
【问题描述】:

我有一个本机 NodeJS 插件,它接受 Buffer 实例作为它的参数之一。

我可以使用以下代码将char 数组转换为Buffer,但要寻找相反的方法。

static v8::Local<v8::Object> create_buffer(char *data, unsigned long length) {
  node::Buffer *slow_buffer = node::Buffer::New(length);
  memcpy(node::Buffer::Data(slow_buffer), data, length);

  v8::Handle<v8::Value> constructor_arguments[3] = {
    slow_buffer->handle_,
    v8::Integer::New(length),
    v8::Integer::New(0)
  };

  v8::Local<v8::Object> global_object = v8::Context::GetCurrent()->Global();
  v8::Local<v8::Function> buffer_constructor = v8::Local<v8::Function>::Cast(global_object->Get(v8::String::New("Buffer")));

  return buffer_constructor->NewInstance(3, constructor_arguments);
}

【问题讨论】:

    标签: c++ node.js v8 node.js-addon


    【解决方案1】:

    也许我迟到了,但下面的代码应该可以工作:

    #include <node.h>
    #include <node_buffer.h>
    
    void Test(const FunctionCallbackInfo<Value>& args)
    {
      Local<Object> bufferObj = args[0]->ToObject();
      char* bufferData = node::Buffer::Data(bufferObj);
      size_t bufferLength = node::Buffer::Length(bufferObj);
    }
    

    参考:

    【讨论】:

    • 得到一个:/usr/bin/node[3316]: ../src/node_buffer.cc:221:size_t node::Buffer::Length(v8::Local&lt;v8::Object&gt;): Assertion obj-&gt;IsUint8Array() failed. 1: node::Abort() [node] 这个。
    • 我想知道从缓冲区传输到 char* 的字符串是否结束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2012-05-27
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    相关资源
    最近更新 更多