Salve a tutti.
Sto integrando nella mia applicazione un protocollo seriale fornitomi da un'azienda estera. L'azienda mi ha fornito una specifica del protocollo e alcuni esempi di codice in c++. Si tratta di scambiare dei buffer di byte.
Nella specifica del protocollo si dice che tutti i frame sono Big Endian, quindi bisogna usare le funzioni "ntohs" o "htons" per convertire il frame. Ora, in c# non ci sono queste funzioni e cercando in rete un metodo equivalente non ne sono venuto a capo; attualmente utilizzo bitconverter per convertire i frame, ma non sono sicuro che sia la stessa cosa perchè i risultati che ottengo non sono corretti.
Dal codice in c++:
formattazione del dato da inviare:
buffer.val = htons(config->val);
che io ho tradotto in
formattazione del dato ricevuto:
config.val = noths(buffer->val);
che io ho tradotto in
lRes[0] = streamReceived[0];
lRes[1] = streamReceived[1];
Test.val = BitConverter.ToUInt16(lRes, 0);
È corretto oppure bitconverter non fa le stesse cose di ntohs e htons? Nel secondo caso, che metodi devo usare?
Vi ringrazio per qualsiasi supporto.