Jump to content
PLC Forum

marcob1984

Convertire in numero una serie di byte hex

Recommended Posts

marcob1984

Buongiorno a tutti,

sono nuovo sulla sezione "linguaggi di programmazione" perchè sono nuovo anche nel mondo c# e VB (ho pochissime nozioni, ho sempre programmato plc). Oggi mi ritrovo con la necessità di leggere e scrivere dei dati da un database di un plc siemens S7-300 con VB.Net (Visual studio 2015 - Visual basic). 

Domanda: se ho una serie di 4 byte in HEX, come faccio ad unirli e a convertirli nel numero reale corrispondente?

Esempio: byte 0 = 00; byte 1 = 80; byte 2 = 1D; byte 3 = 44, corrisponde a 630.0 (6.300000e+002)

Grazie

Edited by marcob1984
Link to post
Share on other sites

lucios

Puoi usare la classe "BitConverter" con il metodo "BitConverter.ToSingle".

Dai un'occhiata qui

Ciao

 

Edited by lucios
Link to post
Share on other sites
GiRock

Guarda che 0x00801D44 non fa di certo 630 manco a girarlo, ma bensì 8396100...

Link to post
Share on other sites
marcob1984

Grazie Lucios per la tua risposta. Proverò la tua soluzione e ti farò sapere.

Per GiRock e dott.cicala: vi illustro la situazione che mi ritrovo nel database del PLC: ho dichiarato un numero di tipo REAL e gli ho assegnato un valore correspondente a 630.0 (6,300000e+002). La memoria di questo "REAL" occupa 4 byte. Se visualizzo i 4 byte splittati su una VAT (tabella delle variabili) leggo i valori in HEX postati sopra. Se aprite un qualsiasi sito (es: http://gregstoll.dyndns.org/~gregstoll/floattohex/ o http://www.h-schmidt.net/FloatConverter/IEEE754.html )in cui potete fare la conversione da HEX a Float, scoprirete che inserendo il valore "441D8000" vi darà come risultato 630.0.

Edited by marcob1984
Link to post
Share on other sites
marcob1984

Grazie Lucios, è proprio la "classe" che mi serviva, provato e funziona.

GiRock, la tua conversione è semplicemente da HEX a DEC. Nella mia domanda iniziale avevo chiaramente scritto "convertirli in reale", che equivale a dire floating point. Forse non ero stato chiaro, correggimi se sbaglio

Link to post
Share on other sites
dott.cicala

Esempio: byte 0 = 00; byte 1 = 80; byte 2 = 1D; byte 3 = 44, corrisponde a 630.0 (6.300000e+002)

 

30bc2d4c96ee7af8a5dcb3044a35bba9.jpg

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...