tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von sheel
  • 1 Beitrag von Blue_Fox
  • 1 Beitrag von Shakie
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
816
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Blue_Fox Blue_Fox ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Beiträge
    32
    Hi Leute

    wie oben schon geschrieben, hab ich das Problem, dass ich einen Byte-String, erzeugt mit "BitConverter.ToString(temp) zu "A1-B2-C3" nicht mehr in das urspruengliche Bytearray zurueckwandeln kann!!

    Egal was ich verwende, es kommen immer die Bytes des String raus.

    Welche Funktionen kann ich da verwenden? Gibt es solche Funktionen?

    mfg
    Blue Fox
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Hi

    Unter der Voraussetzung, dass es eine gültige Eingabe im Format
    hh-hh-hh... ist:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    public byte[] funktion(String s)
    {
        byte[] ret;
        int l = s.Length, i, c;
        if((l % 3) != 0)
            l++;
        l /= 3;
        ret = new byte[l];
        for(i = 0; i < l; i++)
        {
            c = s[3* i];
            c -= (c >= '0' && c <= '9') ? '0' : ((c >= 'a' && c <= 'h') ? ('a' - 10) : ('A' - 10));
            ret[i] = (byte)(c << 4);
            c = s[3* i + 1];
            c -= (c >= '0' && c <= '9') ? '0' : ((c >= 'a' && c <= 'h') ? ('a' - 10) : ('A' - 10));
            ret[i] = (byte)(ret[i] + c);
        }
        return ret;
    }

    Gruß
    Geändert von sheel (30.12.11 um 04:25 Uhr) Grund: Idiotischer Feher vernichtet
    Blue_Fox bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Blue_Fox Blue_Fox ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Beiträge
    32
    Hallo Sheel

    Danke fuer das Programm****** Wird mir sehr weiterhelfen!

    Aber allein haette ich es nicht hinbekommen....

    Mfg

    Blue Fox
     

  4. #4
    Blue_Fox Blue_Fox ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Beiträge
    32
    Sorry aber irgendwie funktionierts doch nicht...

    Wenn ich einen String "A1-B2-C3-D4" habe kommt mit deiner Funktion "0x01 0x12 0x23 0x34" raus

    Edit: Bin draufgekommen warum. Wenn du in der Funktion ein 'a' oder ein 'A' liest, ziehst du 'a' oder 'A' wieder ab! Also kommt da immer 0 raus!

    Ich habs jetzt auf 'W' anstatt 'a' und '7' anstatt 'A' geaendert und schon Funktioniert es!

    Danke nochmal fuer deine Hilfe.

    mfg
    Bastian

    PS: Shorthand Codes machen mich fertig!!
    Geändert von Blue_Fox (30.12.11 um 03:12 Uhr) Grund: Update wegen neuer Erkenntnis
    sheel bedankt sich. 

  5. #5
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    So...
    sorry für diesen unendlich dummen Fehler.

    Problem hast du ja schon erkannt.
    Habs oben auch ausgebessert, aber mit -10 statt anderen Zeichen.

    Gruß
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  6. #6
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Alternativ einfach den String zwischen den Bindestrichen trennen und die Byte.Parse-Methode verwenden um aus dem hexadezimal formatierten String ein Byte zu gewinnen:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Byte[] originalByteData = new Byte[] { 10, 20, 30 };
    String ByteArrayAsString = BitConverter.ToString(originalByteData);
    Console.WriteLine(ByteArrayAsString);
    String[] ByteArrayElementsAsString = ByteArrayAsString.Split(new String[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
    Byte[] recoveredByteData = new Byte[ByteArrayElementsAsString.Length];
    for (int i = 0; i < ByteArrayElementsAsString.Length; i++)
    {
        recoveredByteData[i] = Byte.Parse(ByteArrayElementsAsString[i], System.Globalization.NumberStyles.HexNumber);
        Console.WriteLine(recoveredByteData[i]);
    }
    Consolenausgabe:
    Code :
    1
    2
    3
    4
    
    0A-14-1E
    10
    20
    30
    Blue_Fox bedankt sich. 
    hihi = -h²

  7. #7
    Blue_Fox Blue_Fox ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Beiträge
    32
    Hi Shakie

    Das is auch ne gute Methode!! waere selbst auch nie draufgekommen!! DANKE!!

    mfg

    Blue Fox
     

Ähnliche Themen

  1. Problem beim Erzeugen eines Images aus byte[]
    Von Kai008 im Forum Java Grundlagen
    Antworten: 8
    Letzter Beitrag: 08.07.10, 17:59
  2. Antworten: 1
    Letzter Beitrag: 14.05.07, 11:47
  3. [C#] Bitmap in Byte umwandeln
    Von meilon im Forum .NET Grafik und Sound
    Antworten: 2
    Letzter Beitrag: 14.08.06, 21:39
  4. DWORD in byte umwandeln
    Von dengel im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 26.09.05, 15:33
  5. char -> ASCII -> Byte umwandeln
    Von hankenberge im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 09.09.04, 15:10

Stichworte