Вы можете конвертировать в гекс , используя BitConverter.GetBytes
и BitConverter.ToString
:
public static string FloatToHex(float val)
{
var bytes = BitConverter.GetBytes(val);
return BitConverter.ToString(bytes).Replace("-", string.Empty);
}
И вы можете преобразовать обратно из шестнадцатеричного , преобразовав данные обратно в массив byte
, а затем используя BitConverter.ToSingle
:
public static float HexToFloat(string hexVal)
{
byte[] data = new byte[hexVal.Length / 2];
for (int i = 0; i < data.Length; ++i)
{
data[i] = Convert.ToByte(hexVal.Substring(i * 2, 2), 16);
}
return BitConverter.ToSingle(data, 0);
}
Попробуйте онлайн
В зависимости от системы, с которой вы хотите обмениваться данными, вам, возможно, придется учитывать порядок байтов и соответственно изменять порядок байтов. Вы можете проверить порядковый номер, используя BitConverter.IsLittleEndian
.