Konwersja string na hex byte[]

0

Witam.

Próbuje już od wielu godzin, za nic jednak nie mogę dojść do rozwiązania.

Potrzebuje string przekonwertowac na byte[] której wartości będą miały postać hex czyli np. 0x6D.

Przykład:
string nazwa = "fghijklmnop";

Pożądany Wynik:
byte[] tablica = {0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70};

Moje próby:
Konwertuje stringa na tablice stringow w formie hex ale bez 0x przed wartością:

public static string[] ConvertStringToHex(string asciiString)
             {
                 int dlugosc = asciiString.Length;
                 string[] hex = new string[dlugosc];
                      
                 int i = 0;
                 foreach (char c in asciiString)
                 {
                     int tmp = c;
                     hex[i] = String.Format("{0:x2}",
                    (uint)System.Convert.ToUInt32(tmp.ToString()));
                     i++;
                 }
                 return hex;
             }

Otrzymuje:
string[] hex= {66, 67, 68, 69, 6A, 6B, 6C, 6D, 6E, 6F, 70};
Następnie do każdego hex[i] dodaje "0x". Nie potrafię jednak przekonwertowac tej tablicy na byte[] w formie jaka pokazałem na początku. Zamiast np. 6D lub 0x6D otrzymuje 109.
Jak to wykonać?
Bardzo proszę o pomoc. Pozdrawiam :)

2

Bajty mają wartość, a nie "postać hex".

string nazwa = "fghijklmnop";
byte tablica[] = System.Text.Encoding.Default.GetBytes(nazwa);
0

Otrzymuje:
byte[] tablica = {102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112};

A potrzebuję:
byte[] tablica = {0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70};

Dziękuję za zainteresowanie moim problemem :) Nadal proszę o pomoc.

0

Chyba zrozumiałem swój błąd w rozumowaniu...
Nawet jeśli do urządzenia po RS232 wysyłam ramkę wyglądająca tak:
byte[] tablica = {0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70};
To i tak komputer wysyła ja tak:
byte[] tablica = {102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112};

I dla urządzenia nie ma znaczenia jak wygląda wysyłana ramka...
Jeśli to prawda to zaraz usunę temat, tyle godzin na marne... :P

0

to jest jedno i to samo.
przecież nie wysyłasz stringa o treści 0x66, 0x67, tylko poszczególne bajty.

0

@hsonscyk komputer wysyła to jako ciąg 0 i 1... A to jak je sobie zinterpretujesz - czy jako liczbę binarną, szesnastkową czy dziesiętną to jest tylko i wyłącznie twoja sprawa.

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