我是 Erlang 爱好者和新手 Erlang Prorammer。
我最近不得不面对 Erlang 中的数据处理问题。因此,我决定使用 NIF。我有两个 proplists 列表,我必须根据一个术语返回两个 proplists 的哈希连接。
为了实现它,我决定学习 C 中的二进制操作。此外,我正在使用 nifpp 库(C++11)来简化我的学习体验。来源:https ://github.com/goertzenator/nifpp
以下是我能想到的用于提取二进制文件并将其复制到另一个有据可查的 ErlNifBinary 的代码。但我无法操纵它。
ErlNifBinary ebin, bin_term;
nifpp::get_throws(env, argv[0], ebin); // Assigns ebin to the input binary
enif_alloc_binary(16, &bin_term); // Size of new binary
memcpy(bin_term.data, ebin.data, ebin.size); // Copying the contents of binary
我在 bin_term.data 中有一个指向 unsigned char 的指针。如何更改 bin_term.data 中的内容?
此外,如果我返回现有的复制二进制文件,我会为相同的输入获得不同的输出,并且考虑到我刚刚处理了来自输入的数据这一事实,并且不等于输入。
return enif_make_binary(env, &bin_term);
在 erlang REPL 中,如果我使用参数 <<7>> 或任何其他二进制文件执行函数,我得到的结果为 <<7,127,128,29,0,0,0,0,1,0,0,0,24 ,1,0,0>> 或一些随机动态值。有人可以指出代码中的错误是什么。