小编Zac*_*chB的帖子

将字符串转换为整数十六进制值"奇怪"行为

我注意到java不允许我存储2000000000这样的大数字,即显然是一个整数类型的20亿,但是如果我存储相应的十六进制值即int largeHex = 0x77359400; 这可以,

所以我的程序需要增加到2 ^ 32,刚刚超过42亿,我测试了十六进制密钥0xffffffff,它允许我以这种形式存储为int类型,

我的问题是我必须从程序中提取一个十六进制字符串.

sT = "ffffffff";

int hexSt = Integer.valueOf(sT, 16).intValue();
Run Code Online (Sandbox Code Playgroud)

这仅适用于较小的整数值

我收到一个错误

Exception in thread "main" java.lang.NumberFormatException: For input string: "ffffffff"
Run Code Online (Sandbox Code Playgroud)

我需要做的就是在整数变量中使用此值,例如

int largeHex = 0xffffffff
Run Code Online (Sandbox Code Playgroud)

哪个工作正常?

我正在使用整数,因为我的程序需要生成许多值.

java

4
推荐指数
1
解决办法
5971
查看次数

Node C++ Addon - 当它作为参数传递时,如何访问Typed Array(Float32Array)?

我想使用V8 Float32Array数据结构.我该如何初始化它?

我也对直接存储器访问数据感兴趣.怎么可能这样呢?

c++ node.js node.js-addon

4
推荐指数
1
解决办法
1636
查看次数

d3.js:使用selection.on创建一个扩展列表

我有一个类似的数据结构

[
    {"name":"foo", "links":["a", "b", "c"]}, 
    {"name":"bar", "links":["d", "e", "f"]}
]
Run Code Online (Sandbox Code Playgroud)

我想列一个清单

<ul>
    <li> foo </li>
    <li> bar </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

当我点击foo时,扩展为

<ul>
    <li> foo 
        <ul>
            <li> a </li>
            <li> b </li>
            <li> c </li>
        </ul>
    </li>
    <li> bar </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想用d3.js这样做.制作热门列表非常简单有趣:

toplist = d3.select("body").append("ul");
toplist.selectAll("li")
    .data(data)
    .enter()
    .append("li")
        .text(function(d){return d.name;})
Run Code Online (Sandbox Code Playgroud)

添加子列表甚至很容易:

items = toplist.append("ul")
    .selectAll("li")
    .data(function(d){return d.links})
    .enter()
    .append("li")
         .text(function(d){return d})
Run Code Online (Sandbox Code Playgroud)

我可以on("click"..在每个li中添加一个toplist,比如

toplist.selectAll("li")
    .data(data)
    .enter()
    .append("li")
        .text(function(d){return d.name;})
        .on("click", expand)
Run Code Online (Sandbox Code Playgroud)

并将子列表代码移动到名为expand的函数中.看起来像

function expand(d,i){
Run Code Online (Sandbox Code Playgroud)

然后在其中包含上述 …

d3.js

3
推荐指数
1
解决办法
7039
查看次数

Node.js和C/C++集成:如何正确实现回调?

我正在尝试实现与node.js集成的C++扩展.此扩展将在内部调用一些阻塞调用,因此它需要为node.js世界提供非阻塞接口.

https://nodejs.org/api/addons.html中所述,有两种方法可以实现非阻塞回调:

a)通过使用JavaScript函数的简单回调.所以我的扩展必须生成一个线程并立即返回,让该线程调用阻塞代码,然后在返回时调用JavaScript回调.这似乎相对简单.

b)通过使用libuv库,如果我理解正确,将事件发布到node.js事件循环.我没有详细阅读过libuv文档,但实现起来似乎相当复杂.

我的偏好当然是a),但我不知道其含义是什么.如果从不同的线程调用回调是否有任何问题,从而将node.js标准方法限制为非阻塞IO?或者是否需要使用libuv来正确处理我的代码及其阻塞调用的线程?

非常感谢您的帮助.

c++ multithreading node.js node.js-addon

3
推荐指数
1
解决办法
1513
查看次数

node.js addon - 如何将字符串参数传递给(nan)C++

我的node.js代码执行此操作:

var MyMQ = require( './build/release/mqconn' ) ;
var MyQmgrName = 'QM_CNT' ; // req.params.qmgrname ; 
MyMQ.connect ( MyQmgrName, function ( err, result ) { 
Run Code Online (Sandbox Code Playgroud)

我的C++代码(uning nan)想要接收第一个字符串参数:

NAN_METHOD( MQ_Connect ) {

    NanScope();
    Local<Value> szQMN( args[ 0 ] );
    printf( "(cc)>>>> qmn [%s].\n", szQMN ) ;
Run Code Online (Sandbox Code Playgroud)

......但我得到的是垃圾.

我有什么不对的任何线索?塞巴斯蒂安.

c++ node.js node.js-addon ibm-mq

3
推荐指数
1
解决办法
3339
查看次数

使用NAN将数组从node.js传递到c ++ v8

我使用NAN在node.js中包含一个c ++库.我理解如何在两者之间来回传递数字和字符串,但我不明白如何传递数组.我想做的是这样的事情:

index.js

var test = require('bindings')('test');

var buffer = [0,0,0,0,0,0.1,0,0,0,0,-0.1];
test.encode(buffer, buffer.length);
Run Code Online (Sandbox Code Playgroud)

test.cc

var encoder = new Encoder();

NAN_METHOD(Encode){

    //the next line is incorrect, I want to take the buffer array and pass it as a pointer to the encodeBuffer() function
    Local<Number> buffer = args[0].As<Number>();

    //get the integer value of the second argument
    Local<Number> buffer_length = args[1].As<Number>();
    int bl_int = buffer_length->IntegerValue();

    //call function
    encoder.encodeBuffer(buffer, bl_int);
}

void Init(Handle<Object> exports) {
  exports->Set(NanNew("encode"), NanNew<FunctionTemplate>(Encode)->GetFunction());
}
Run Code Online (Sandbox Code Playgroud)

我想在c ++库中使用的实际方法是:

void encodeBuffer(float …
Run Code Online (Sandbox Code Playgroud)

javascript c++ node.js node-gyp node.js-addon

3
推荐指数
1
解决办法
3954
查看次数

V8多线程功能

我正在编写一个Node插件,我在尝试从C++工作线程调用V8函数对象时遇到问题.

我的插件基本上启动了一个C++ std :: thread并使用WaitForSingleOject()进入等待循环,这是由写入一些共享内存的不同C++应用程序(一个X-Plane插件)触发的.我试图让我的Node插件在发出Windows共享事件时唤醒,然后调用我从节点应用程序注册的JavaScript函数,该函数将依次将源自X-Plane的数据传递回Node和网络世界.

我已经设法解决了如何注册JavaScript函数并从C++调用它,但仅限于主V8线程.我似乎找不到从std :: thread调用函数的方法.

我尝试了各种方法,Locker对象(变量成功),持久性函数(不起作用),保存主隔离对象,进入/退出隔离,但是如果/当代码最终到达函数对象时它无效.

我得到了不同的结果,从崩溃到冻结,取决于我是否创建了各种储物柜和解锁器对象.

我对V8完全不熟悉,所以我不确定我做的是什么.有问题的代码如下:

如果有人能够提供帮助,我将永远感激不尽!

float* mem = 0;
HANDLE event = NULL;
Isolate* thisIsolate;

void readSharedMemory()
{
    //Isolate* isolate = Isolate::GetCurrent();
    //HandleScope scope(isolate);

    thisIsolate->Enter();
    v8::Locker locker(thisIsolate);
    v8::Isolate::Scope isolateScope(thisIsolate);
    //HandleScope scope(thisIsolate);        

    //v8::Local<Value> myVal = v8::String::NewFromUtf8(isolate, "Plugin world");
    v8::Local<Value> myVal = v8::Number::New(thisIsolate, *mem);

    // If it get's this far 'myFunction' is not valid
    bool isFun = myFunction->IsFunction();
    isFun = callbackFunction->IsFunction();

    v8::Context *thisContext = *(thisIsolate->GetCurrentContext());
    myFunction->Call(thisContext->Global(), 1, &(Handle<Value>(myVal)));
}

void registerCallback(const FunctionCallbackInfo<Value>& args)
{
    Isolate* …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading v8 node.js node.js-addon

3
推荐指数
1
解决办法
1900
查看次数

NodeJS Addon从NAN AsyncWorker :: Execute内部调用Javascript回调

我想从异步插件函数中调用nodejs回调.我已经看到了同步示例(这里),我正在使用一个很棒的异步示例(这里)作为起始基础.

但是,当我尝试执行给c ++ AsyncWorker子类的回调时,我收到了Segmentation错误.

这是我的代码:

#include <nan.h>
#include <functional>
#include <iostream>
#include <exception>
using namespace Nan;
using namespace v8;
using namespace std;

class ScriptWorker : public AsyncWorker {
  public:
    ScriptWorker(Callback *callback, const std::map<std::string, Callback*>)
    : AsyncWorker(callback), script(script), cbs(cbs) {}

    ~ScriptWorker() {}

    void Execute () {

      // ------------------------
      // Segmentation fault after
      // ------------------------

      Local<Value> argv[] = {
        New<v8::Number>(id)
      };

      // -------------------------
      // Segmentation fault before
      // -------------------------

      cbs["getUser"]->Call(1, argv);
    }

  private:
    std::string script;
    std::map<std::string, Callback*> cbs; …
Run Code Online (Sandbox Code Playgroud)

c++ asynchronous node.js node.js-nan node.js-addon

3
推荐指数
1
解决办法
3552
查看次数

writev只写部分数据怎么处理?

我的数据自然是分段的,并且来自不同的来源,因此我writev按如下方式使用该函数。

char *buf0 = "short string\n";
struct bar *my_bar;
my_baz = get_my_baz();
iov[0].iov_base = buf0;
iov[0].iov_len = strlen(buf0);
iov[1].iov_base = my_bar;
iov[1].iov_len = sizeof (struct bar);
bytes_written = writev (sockfd, iov, 3);
Run Code Online (Sandbox Code Playgroud)

我想发送我的所有数据。如果 writev 一次只写入部分数据怎么办,例如:

bytes_written = 1;
Run Code Online (Sandbox Code Playgroud)

如何继续发送剩余数据?在write函数中,我们可以使用这个方法,那么writev呢?

sockets linux

3
推荐指数
1
解决办法
1025
查看次数

如何在单个 (.a) 存档中仅获取所需的目标文件

只是一个简单的问题,但我无法\xe2\x80\x99t 在任何地方找到答案。将所有目标文件放入存档时,如何指示 clang++ 仅获取所需的目标文件进行链接,以避免由于 archive\xe2\x80\xaf 中不需要的符号而导致未定义符号错误?

\n

c c++ linker unix-ar llvm-clang

3
推荐指数
1
解决办法
2478
查看次数