bytearray füllen...



  • Guten morgen,

    so folgendes Problem, ich habe ein Bytearray names pup:

    unsigned char pup[]= { 
    0x1A,0,1,0,0,0,0,0,9,0x5F,0x30,0x42,0x30,0x30,0x30,0x30,0x34,0x50,	0x0D,0x31,0x30,0x30,0x30,0x32,0x30,0x38,0x30,0x30,0x30,0x31,0x31,0x30,0 	};
    

    so wie hier deklariert gibts keine fehler, nun will ich es so machen:

    unsigned char pup[32];
    
    memcpy(pup,?????,32);
    

    wie bekomm ich nun die hexwerte,wie sie hier stehen

    0x1A,0,1,0,0,0,0,0,9,0x5F,0x30,0x42,0x30,0x30,0x30,0x30,0x34,0x50,	0x0D,0x31,0x30,0x30,0x30,0x32,0x30,0x38,0x30,0x30,0x30,0x31,0x31,0x30,0
    

    hex/char aquvalenz.. aber wenn ich das in ein strning hau bekomm ich falsche werte.
    0x1A=='\1A';

    wie nun?

    geht das überhaupt?



  • nö, wenn dann nur einzeln, der statische weg ist in diesem falle die effizientere lösung. vgl. hash/cipher algorithmen, wenn die daten (z.b. die sboxes) einen bereich von vielleicht bis zu einem kilobyte umfassen, ist es üblich die arrays in headerdateien statisch zu initialisieren. für alles andere ist die auslagerung in separaten binärdateien sinnvoll, deren inhalt du dann gewohnt mit entprechenden funktionen in den speicher kopierst.



  • ja aber

    0x1A
    

    ist ja aqvivalent zu

    '\1A'
    

    d.h. ich könnte doch das ganze mit

    "\1A\0\1\0...."
    

    kopieren.. aber funktioniert nicht richtig:(



  • BorisDieKlinge schrieb:

    ja aber

    0x1A
    

    ist ja aqvivalent zu

    '\1A'
    

    nein ist es nicht. wenn, dann

    "\x1A"
    

    also

    "\x1A\x00\x01\x00"
    

    edit: ist aber wie gesagt eine verschwendung von cpu ressourcen im kleinen maßstab, bei solch kleinen datenmengen ist es sinnvoller die daten statisch schon im datensegment zu haben, an der codegröße selbst ändert es garnüx 😉



  • Boris dankt 👍



  • sothis_ schrieb:

    "\x1A\x00\x01\x00"
    

    warum nicht

    {0x1a,0x00,0x01,0x00}
    

    diese schreibweise finde ich irgendwie besser, als dieses quetschen von bytes in strings.
    🙂



  • fricky schrieb:

    sothis_ schrieb:

    "\x1A\x00\x01\x00"
    

    warum nicht

    {0x1a,0x00,0x01,0x00}
    

    diese schreibweise finde ich irgendwie besser, als dieses quetschen von bytes in strings.
    🙂

    reine geschmacksache 🙂 der produzierte code ist der gleiche 🙂



  • sothis_ schrieb:

    reine geschmacksache 🙂 der produzierte code ist der gleiche 🙂

    ...und deine schreibweise hat noch den vorteil, dass man die letzte 0 weglassen kann.
    🙂



  • fricky schrieb:

    sothis_ schrieb:

    reine geschmacksache 🙂 der produzierte code ist der gleiche 🙂

    ...und deine schreibweise hat noch den vorteil, dass man die letzte 0 weglassen kann.
    🙂

    ja nicht :), man kann sogar noch ein L davor setzen um alle zwei bytes eine 0x00 zu haben 😃


Anmelden zum Antworten