基本的にTCP接続からいくつかのバイナリデータを受け入れ、C nifを使用してデータを復号化し、復号化されたデータを返すErlangコードを書いています。
問題は、渡されたバイナリを変更する方法がわからないように見えることです。
これは私が使用している関数です。誰かが私を正しい方向に向けることができれば、私はそれをいただければ幸いです。
static ERL_NIF_TERM decrypt(ErlNifEnv* env, ErlNifBinary *data);
ありがとう!
基本的にTCP接続からいくつかのバイナリデータを受け入れ、C nifを使用してデータを復号化し、復号化されたデータを返すErlangコードを書いています。
問題は、渡されたバイナリを変更する方法がわからないように見えることです。
これは私が使用している関数です。誰かが私を正しい方向に向けることができれば、私はそれをいただければ幸いです。
static ERL_NIF_TERM decrypt(ErlNifEnv* env, ErlNifBinary *data);
ありがとう!
渡されたバイナリを変更することはできません。最初にコピーを作成し、コピーされたバイナリを変更してから、コピーされた (=変更された) バイナリを呼び出し元に返す必要があります。
バイナリは共有ヒープに割り当てられることに注意してください。オリジナルを上書きすると、Erlang の単一割り当ての原則に違反するため、問題が発生します。
詳細については、sfmt-erlang NIF コードでバイナリ引数を処理する例を参照してください。