Konversja float na tablice bytów dla modbusa

0

Witam potrzebuje funkcji która za stringa(zapisany w nim jest float ) zamieni ja stringa który przechowuje dane w formie "<byte1 w HEx> <byte0 w HEx> <byte3 w HEx> <byte2 w HEx> " w wersji
Poniżej jest funkcja której używam spełnia moje wymagania jednakże mam nieodparte wrażenie że da się to zrobić prościej, prosiłbym o zaproponowanie nowej wersji funkcji

public static string KonwersjaReal(String Dane)
        {
            float Liczba;
            float.TryParse(Dane, out Liczba);
            //BitConverter.IsLittleEndian;
            byte[] ByteLiczba = BitConverter.GetBytes(Liczba);
            byte[] Temp = new byte[2];
           
            for (int i = 0; i < 2; i++)
            {
                Temp[i] = ByteLiczba[2 * i];
                ByteLiczba[2 * i] = ByteLiczba[2 * i + 1];
                ByteLiczba[2 * i + 1] = Temp[i];
            }

            return BitConverter.ToString(ByteLiczba,).Replace("-", " ");
        } 
0

Niestety analiza informacji na stronie pod podanym adresem nie pomogła mi. Z tego co widzę to Single.Parce dotyczy konwersji liczby stringa na float.
Czyli jest to bardziej zaawansowana forma float.TryParse(Dane, out Liczba);

W związku z tym zastosowanie nie skraca i nie poprawia mojej funkcji.

Dzięki za linka może przyda się później.

0

No tak, nie przyjrzałem się i zrozumiałem, że chodzi Ci o coś odwrotnego. Bez sensu ten mój link.

Ja bym przede wszystkim usunął pętlę, która nic tu nie daje, a po drugie użył string.Join i byte.ToString():

public static string KonwersjaReal(string text)
{
    float number;
    float.TryParse(text, out number);
    byte[] bytes = BitConverter.GetBytes(number);
    byte[] swaped = new byte[] { bytes[1], bytes[0], bytes[3], bytes[2] };
    return string.Join(" ", swaped.Select(s => s.ToString("X2")));
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1