Is there an efficient way to pass BIGINT (integers exceeding 64 bits for x86_64/amd64 architectures) between Erlang VM and the NIFs? So far I haven't found a supporting function in the enif module. Maybe converting BIGINTs to binaries will help, but there might be another good way.
Passing BIGINT between Erlang VM and the NIFs
282 Views Asked by jj1bdx At
1
There are 1 best solutions below
Related Questions in ERLANG
- Using gleam, cannot import 'gleam/otp/process'
- Zig Concurrency Vs Erlang Concurrency, is Zig less efficient than Erlang?
- Creaating a new Key Value dict from previous dict
- How to execute an exit function before closing rebar3 shell?
- rebar3 does not compile anything in `src` directory
- Ejabberd Migration from 23 to 24
- How to use compiled erlang modules in an elixir project?
- ejabberd_sql:handle_reconnect/2:491 odbc connection failed ejabberd
- Lisp Flavored Erlang: Can't find include lib include/ltest-macros.lfe
- Signing key for RabbitMQ
- Rabbitmq fails to start and getting Erlang eaacces error
- Erlang: binary_to_term explanation
- How to extend emqx clientInfo to get more fields during HTTP Authorization
- Transforming `erl_parse:abstract_form()` to `erl_syntax:syntaxTree()`
- Who is the sender of Erlang's trace messages and what can I assume based on it?
Related Questions in BIGINT
- How to convert BigInt array representation to the Integer representation?
- String to BigInt in JavaScript
- Bigint: Failed to load bindings | tsconfig.json - cannot read file
- Why BigInt(2 ** 100) does return a correct result in Chrome, Firefox, Safari
- Access 365 convert text back to BigInt
- Vite app works in DEV but not after BUILD and PREVIEW: BigInt is not a function
- Convert BigInt to Number Sol -> Javascript
- Divide 2 Bigints (Find percentage change)
- JS is not converting Big Number to a string correctly
- SQL SELECT ERRO ARITHMETIC
- BigInt modulo float
- How to generate a random `bigint` number between two `bigint` numbers in TypeScript?
- How to store a uuid type into bigint effectively?
- Is there a method to print a n-bit (like 256-bit) integer in c without using an external library?
- Load Python Pandas data into SQL Server, conversion from variable or parameter type INT to target column type BIGINT is not supported
Related Questions in ERLANG-NIF
- How to deal with big integers in Elixir NIFs
- Erlang NIF not linking properly on Mac M1
- Erlang NIF crashes on unavailable resources when calling enif_thread_create without enif_thread_join
- Running Google Mock from an Erlang NIF
- :erlang.load_nif/2 finds shared library file inside original project but can't find it if the project gets imported
- How to call `ERL_NIF_TERM` when I know that it is a funciton?
- How to use binary strings in Elixir NIF
- How to do Memory-mapped IO in Erlang?
- NIFs Segmentation Fault without creating erl_crash.dump however code is working fine when ran normally without NIFs
- NIFs raise Segmentation Fault while loading function has try catch block to handle the exception
- How to use a variable as pass by reference in Erlang?
- Creating dirty threads in erlang nif
- Elixir CRC will not compile on MAC OS
- How to case switch in erlang using a function value?
- Erlang NIF weird iolist behavior
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
This post from 2011 says there wasn't any support for big integers in the NIF API at the time. I couldn't find any such function in Erlang/OTP 21's documentation, so the statement is likely true as of today as well.
Here's how you could pass a big integer as an array of bytes:
From Erlang, instead of passing the integer directly, pass two values: the sign of the integer and the binary obtained by calling
binary:encode_unsigned/1on the integer.In the NIF function, you can get access to the bytes of the second argument using
enif_inspect_binary:bin.datanow points tobin.sizebytes, representing the bytes of the integer in Big Endian order (if you want Little Endian, passlittleas the second argument tobinary:encode_unsigned/2above).