binäre daten in quelltext einbauen
-
Hallo!
Gibt es ein programm, shellscript, etc., das binäre Daten, wie Àtƒ#þjXéÈ ‹
´C ‹}‹5¸C ‹Á in C variablen wie char dat[]={0x23,0x69,0x6E,0x63,0x6C,0x75} umwandelt?Bitte freeware/opensource für Windows und/oder Linux.
-
-
Danke.
-
#include <stdio.h> int main( int argc, char** argv ) { int c; int x; const char* name = 0; if ( argc < 2 ) { fprintf( stderr, "Usage: %s <name>\ninput via stdin\n", argv[0] ); return 0; } name = argv[1]; printf( "#pragma pack(1)\n" ); printf( "const char %s[] = {\n", name ); x = 0; while ( c != EOF ) { if ( x == 0 ) printf( " " ); printf( "'\\X%02X',", c & 255 ); if ( ++x == 10 ) { printf( "\n" ); x = 0; } } printf( "\n};\n" ); printf( "#pragma pack()\n" ); return 0; }
-
das pragma pack macht da irgendwie keinen sinn?!
-
Doch: Wie Elemente in einem Array aligned werden, ist im Standard m.E. nicht definiert. Falls man meint, man braucht das nicht, kann man's ja auch weglassen.
-
Power Off schrieb:
Wie Elemente in einem Array aligned werden, ist im Standard m.E. nicht definiert.
du meinst bei
char str[] = "Hallo"; fwrite(str, ...);
sei nicht definiert, dass da Hallo ausgegeben wird?
Das kann ich mir nicht vorstellen...
-
DrGreenthumb schrieb:
Power Off schrieb:
Wie Elemente in einem Array aligned werden, ist im Standard m.E. nicht definiert.
du meinst bei
char str[] = "Hallo"; fwrite(str, ...);
sei nicht definiert, dass da Hallo ausgegeben wird?
Das kann ich mir nicht vorstellen...wir wissen, daß sizeof(char)==1. wir wissen aber leider nicht, wieviele bits ein char hat. warum nicht 16 und in der datei durch deinen rechner geschrieben würde was landen, das mein rechner als "\0H\0a\0l\0l\0o" verstehen würde.
aber das #pragma pack dort halte ich für unfug, es legt afair nur das alignment in strukturen fest.