string na byte (hex)

XF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Witam potrzebuję funkcji która zamienia string na tablice byte czyli np:
string wej = "01ABFA346"

wynikiem funkcji bedzie tablica:
byte[] wynik = {0x01,0xAB,0xFA,0x34,0x6}

wypociłem coś takiego:

Kopiuj
private byte[] ZamienStringNaHEX1(string wejscie)
        {
            byte[] tablica;

            if (wejscie.Length % 2 == 0)
                tablica = new byte[wejscie.Length / 2];
            else
                tablica = new byte[wejscie.Length / 2 + 1];

            for (int i = 0; i < tablica.Length; i ++)
            {
                if (i*2 == wejscie.Length - 1)
                    tablica[j] = Byte.Parse(wejscie.Substring(i*2, 1));
                else
                    tablica[j] = Byte.Parse(wejscie.Substring(i*2, 2));
            }
            return tablica;
        }

ale problem w tym, że nie kiedy pojawi się np "AB" to wywala błąd: "Nieprawidłowy format ciągu wejściowego.". I nie wiem jak to inaczej napisać aby było poprawnie. Ale dla samych cyfr 0-9 działa tak jak powinno.

MX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
1

Funkcja Parse spodziewa się, że string będzie składał się z cyfr. Użyj

Kopiuj
Byte.Parse(string_do_zmiany, System.Globalization.NumberStyles.AllowHexSpecifier);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.