Forum: Mikrocontroller und Digitale Elektronik hex -> text und andersrum konvertieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

in einem Webserver Beispiel für meinen Arduino habe ich ein Array, wo 
der HTML Code drin steht. Dies sieht so aus:
static const unsigned char data__index_html[] = {
/* /index.html (12 chars) */
0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x00,

/* HTTP header */
/* "HTTP/1.0 200 OK
/" (17 bytes) */
0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d,
0x0a,
/* "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip)
/" (63 bytes) */
0x53,0x65,0x72,0x76,0x65,0x72,0x3a,0x20,0x6c,0x77,0x49,0x50,0x2f,0x31,0x2e,0x33,
0x2e,0x31,0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x61,0x76,0x61,0x6e,
0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x70,
0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x77,0x69,0x70,0x29,0x0d,0x0a,
/* "Content-type: text/html

/" (27 bytes) */
0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x74,0x65,
0x78,0x74,0x2f,0x68,0x74,0x6d,0x6c,0x0d,0x0a,0x0d,0x0a,
/* raw file data (1751 bytes) */
0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x3c,0x74,
0x69,0x74,0x6c,0x65,0x3e,0x6c,0x77,0x49,0x50,0x20,0x2d,0x20,0x41,0x20,0x4c,0x69,
0x67,0x68,0x74,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x54,0x43,0x50,0x2f,0x49,0x50,
0x20,0x53,0x74,0x61,0x63,0x6b,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x3c,0x2f,
0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x20,0x62,0x67,0x63,
0x6f,0x6c,0x6f,0x72,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x20,0x74,0x65,0x78,
0x74,0x3d,0x22,0x62,0x6c,0x61,0x63,0x6b,0x22,0x3e,0x0d,0x0a,0x0d,0x0a,0x20,0x20,
0x20,0x20,0x3c,0x74,0x61,0x62,0x6c,0x65,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,
0x31,0x30,0x30,0x25,0x22,0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,
0x72,0x20,0x76,0x61,0x6c,0x69,0x67,0x6e,0x3d,0x22,0x74,0x6f,0x70,0x22,0x3e,0x3c,
0x74,0x64,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x38,0x30,0x22,0x3e,0x09,0x20,
0x20,0x0d,0x0a,0x09,0x20,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68,
0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x73,0x69,0x63,0x73,0x2e,0x73,
0x65,0x2f,0x22,0x3e,0x3c,0x69,0x6d,0x67,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x69,
0x6d,0x67,0x2f,0x73,0x69,0x63,0x73,0x2e,0x67,0x69,0x66,0x22,0x0d,0x0a,0x09,0x20,
0x20,0x62,0x6f,0x72,0x64,0x65,0x72,0x3d,0x22,0x30,0x22,0x20,0x61,0x6c,0x74,0x3d,
0x22,0x53,0x49,0x43,0x53,0x20,0x6c,0x6f,0x67,0x6f,0x22,0x20,0x74,0x69,0x74,0x6c,
0x65,0x3d,0x22,0x53,0x49,0x43,0x53,0x20,0x6c,0x6f,0x67,0x6f,0x22,0x3e,0x3c,0x2f,
0x61,0x3e,0x0d,0x0a,0x09,0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x74,0x64,0x20,0x77,0x69,
0x64,0x74,0x68,0x3d,0x22,0x35,0x30,0x30,0x22,0x3e,0x09,0x20,0x20,0x0d,0x0a,0x09,
0x20,0x20,0x3c,0x68,0x31,0x3e,0x6c,0x77,0x49,0x50,0x20,0x2d,0x20,0x41,0x20,0x4c,
0x69,0x67,0x68,0x74,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x54,0x43,0x50,0x2f,0x49,
0x50,0x20,0x53,0x74,0x61,0x63,0x6b,0x3c,0x2f,0x68,0x31,0x3e,0x0d,0x0a,0x09,0x20,
0x20,0x3c,0x70,0x3e,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x54,0x68,0x65,0x20,0x77,
0x65,0x62,0x20,0x70,0x61,0x67,0x65,0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,
0x77,0x61,0x74,0x63,0x68,0x69,0x6e,0x67,0x20,0x77,0x61,0x73,0x20,0x73,0x65,0x72,
0x76,0x65,0x64,0x20,0x62,0x79,0x20,0x61,0x20,0x73,0x69,0x6d,0x70,0x6c,0x65,0x20,
0x77,0x65,0x62,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x73,0x65,0x72,0x76,0x65,0x72,
0x20,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x70,0x20,
0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x67,0x68,0x74,0x77,0x65,0x69,0x67,
0x68,0x74,0x20,0x54,0x43,0x50,0x2f,0x49,0x50,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,
0x3c,0x61,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68,
0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x73,0x69,0x63,0x73,0x2e,0x73,
0x65,0x2f,0x7e,0x61,0x64,0x61,0x6d,0x2f,0x6c,0x77,0x69,0x70,0x2f,0x22,0x3e,0x6c,
0x77,0x49,0x50,0x3c,0x2f,0x61,0x3e,0x2e,0x0d,0x0a,0x09,0x20,0x20,0x3c,0x2f,0x70,
0x3e,0x0d,0x0a,0x09,0x20,0x20,0x3c,0x70,0x3e,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,
0x6c,0x77,0x49,0x50,0x20,0x69,0x73,0x20,0x61,0x6e,0x20,0x6f,0x70,0x65,0x6e,0x20,
0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
0x61,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x54,0x43,0x50,
0x2f,0x49,0x50,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x74,0x6f,0x63,
0x6f,0x6c,0x20,0x73,0x75,0x69,0x74,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x77,0x61,
0x73,0x20,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x6c,0x79,0x20,0x77,0x72,0x69,
0x74,0x74,0x65,0x6e,0x20,0x62,0x79,0x20,0x3c,0x61,0x0d,0x0a,0x09,0x20,0x20,0x20,
0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,
0x77,0x2e,0x73,0x69,0x63,0x73,0x2e,0x73,0x65,0x2f,0x7e,0x61,0x64,0x61,0x6d,0x2f,
0x6c,0x77,0x69,0x70,0x2f,0x22,0x3e,0x41,0x64,0x61,0x6d,0x20,0x44,0x75,0x6e,0x6b,
0x65,0x6c,0x73,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,
0x20,0x53,0x77,0x65,0x64,0x69,0x73,0x68,0x20,0x49,0x6e,0x73,0x74,0x69,0x74,0x75,
0x74,0x65,0x20,0x6f,0x66,0x20,0x43,0x6f,0x6d,0x70,0x75,0x74,0x65,0x72,0x20,0x53,
0x63,0x69,0x65,0x6e,0x63,0x65,0x3c,0x2f,0x61,0x3e,0x20,0x62,0x75,0x74,0x20,0x6e,
0x6f,0x77,0x20,0x69,0x73,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x62,0x65,0x69,0x6e,
0x67,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x6c,0x79,0x20,0x64,0x65,0x76,0x65,0x6c,
0x6f,0x70,0x65,0x64,0x20,0x62,0x79,0x20,0x61,0x20,0x74,0x65,0x61,0x6d,0x20,0x6f,
0x66,0x20,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x65,0x72,0x73,0x0d,0x0a,0x09,0x20,
0x20,0x20,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x64,0x20,0x77,
0x6f,0x72,0x6c,0x64,0x2d,0x77,0x69,0x64,0x65,0x2e,0x20,0x53,0x69,0x6e,0x63,0x65,
0x20,0x69,0x74,0x27,0x73,0x20,0x72,0x65,0x6c,0x65,0x61,0x73,0x65,0x2c,0x20,0x6c,
0x77,0x49,0x50,0x20,0x68,0x61,0x73,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x73,0x70,
0x75,0x72,0x72,0x65,0x64,0x20,0x61,0x20,0x6c,0x6f,0x74,0x20,0x6f,0x66,0x20,0x69,
0x6e,0x74,0x65,0x72,0x65,0x73,0x74,0x20,0x61,0x6e,0x64,0x20,0x68,0x61,0x73,0x20,
0x62,0x65,0x65,0x6e,0x20,0x70,0x6f,0x72,0x74,0x65,0x64,0x20,0x74,0x6f,0x20,0x73,
0x65,0x76,0x65,0x72,0x61,0x6c,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x70,0x6c,0x61,
0x74,0x66,0x6f,0x72,0x6d,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f,0x70,0x65,0x72,0x61,
0x74,0x69,0x6e,0x67,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,0x73,0x2e,0x20,0x6c,0x77,
0x49,0x50,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x65,
0x69,0x74,0x68,0x65,0x72,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x77,0x69,0x74,0x68,
0x20,0x6f,0x72,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x61,0x6e,0x20,0x75,
0x6e,0x64,0x65,0x72,0x6c,0x79,0x69,0x6e,0x67,0x20,0x4f,0x53,0x2e,0x0d,0x0a,0x09,
0x20,0x20,0x3c,0x2f,0x70,0x3e,0x0d,0x0a,0x09,0x20,0x20,0x3c,0x70,0x3e,0x0d,0x0a,
0x09,0x20,0x20,0x20,0x20,0x54,0x68,0x65,0x20,0x66,0x6f,0x63,0x75,0x73,0x20,0x6f,
0x66,0x20,0x74,0x68,0x65,0x20,0x6c,0x77,0x49,0x50,0x20,0x54,0x43,0x50,0x2f,0x49,
0x50,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,
0x20,0x69,0x73,0x20,0x74,0x6f,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x0d,0x0a,0x09,
0x20,0x20,0x20,0x20,0x74,0x68,0x65,0x20,0x52,0x41,0x4d,0x20,0x75,0x73,0x61,0x67,
0x65,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x73,0x74,0x69,0x6c,0x6c,0x20,0x68,0x61,
0x76,0x69,0x6e,0x67,0x20,0x61,0x20,0x66,0x75,0x6c,0x6c,0x20,0x73,0x63,0x61,0x6c,
0x65,0x20,0x54,0x43,0x50,0x2e,0x20,0x54,0x68,0x69,0x73,0x0d,0x0a,0x09,0x20,0x20,
0x20,0x20,0x6d,0x61,0x6b,0x65,0x73,0x20,0x6c,0x77,0x49,0x50,0x20,0x73,0x75,0x69,
0x74,0x61,0x62,0x6c,0x65,0x20,0x66,0x6f,0x72,0x20,0x75,0x73,0x65,0x20,0x69,0x6e,
0x20,0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,
0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x65,0x6e,0x73,0x0d,0x0a,0x09,0x20,0x20,
0x20,0x20,0x6f,0x66,0x20,0x6b,0x69,0x6c,0x6f,0x62,0x79,0x74,0x65,0x73,0x20,0x6f,
0x66,0x20,0x66,0x72,0x65,0x65,0x20,0x52,0x41,0x4d,0x20,0x61,0x6e,0x64,0x20,0x72,
0x6f,0x6f,0x6d,0x20,0x66,0x6f,0x72,0x20,0x61,0x72,0x6f,0x75,0x6e,0x64,0x20,0x34,
0x30,0x20,0x6b,0x69,0x6c,0x6f,0x62,0x79,0x74,0x65,0x73,0x0d,0x0a,0x09,0x20,0x20,
0x20,0x20,0x6f,0x66,0x20,0x63,0x6f,0x64,0x65,0x20,0x52,0x4f,0x4d,0x2e,0x0d,0x0a,
0x09,0x20,0x20,0x3c,0x2f,0x70,0x3e,0x0d,0x0a,0x09,0x20,0x20,0x3c,0x70,0x3e,0x0d,
0x0a,0x09,0x20,0x20,0x20,0x20,0x4d,0x6f,0x72,0x65,0x20,0x69,0x6e,0x66,0x6f,0x72,
0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x6c,0x77,0x49,
0x50,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x61,
0x74,0x20,0x74,0x68,0x65,0x20,0x6c,0x77,0x49,0x50,0x0d,0x0a,0x09,0x20,0x20,0x20,
0x20,0x68,0x6f,0x6d,0x65,0x70,0x61,0x67,0x65,0x20,0x61,0x74,0x20,0x3c,0x61,0x0d,
0x0a,0x09,0x20,0x20,0x20,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,
0x3a,0x2f,0x2f,0x73,0x61,0x76,0x61,0x6e,0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,
0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,
0x6c,0x77,0x69,0x70,0x2f,0x22,0x3e,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x61,
0x76,0x61,0x6e,0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,0x6e,0x75,0x2e,0x6f,0x72,
0x67,0x2f,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x77,0x69,0x70,0x2f,
0x3c,0x2f,0x61,0x3e,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x6f,0x72,0x20,0x61,0x74,
0x20,0x74,0x68,0x65,0x20,0x6c,0x77,0x49,0x50,0x20,0x77,0x69,0x6b,0x69,0x20,0x61,
0x74,0x20,0x3c,0x61,0x0d,0x0a,0x09,0x20,0x20,0x20,0x20,0x68,0x72,0x65,0x66,0x3d,
0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6c,0x77,0x69,0x70,0x2e,0x77,0x69,0x6b,
0x69,0x61,0x2e,0x63,0x6f,0x6d,0x2f,0x22,0x3e,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,
0x6c,0x77,0x69,0x70,0x2e,0x77,0x69,0x6b,0x69,0x61,0x2e,0x63,0x6f,0x6d,0x2f,0x3c,
0x2f,0x61,0x3e,0x2e,0x0d,0x0a,0x09,0x20,0x20,0x3c,0x2f,0x70,0x3e,0x0d,0x0a,0x09,
0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x74,0x64,0x3e,0x0d,0x0a,0x09,0x20,0x20,0x26,0x6e,
0x62,0x73,0x70,0x3b,0x0d,0x0a,0x09,0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x2f,0x74,0x72,
0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x74,0x61,0x62,0x6c,0x65,
0x3e,0x0d,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x3c,0x2f,0x68,0x74,
0x6d,0x6c,0x3e,0x0d,0x0a,0x0d,0x0a,
};

Jetzt suche ich eine Seite oder Programm, welches mir die Hex-Zahlen so 
in Text umwandelt und auch Text in diese Form zurück wandelt.
Vielleicht hat ja hier einer eine gute Seite oder Programm?

Gruß Kilian

von Karl H. (kbuchegg) (Moderator)


Bewertung
1 lesenswert
nicht lesenswert
Kilian K. schrieb:
> Hallo,
>
> in einem Webserver Beispiel für meinen Arduino habe ich ein Array, wo
> der HTML Code drin steht. Dies sieht so aus:
> static const unsigned char data__index_html[] = {
> /* /index.html (12 chars) */
> 0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x00,

Wer so einen Unsinn verbrochen hat, sollte mit dem nassen Fetzen 
erschlagen werden! na ja, Arduio eben.

Da steht nichts anderes als
  static const unsigned char data__index_html[] =
    "/index.html\x00"
    "HTTP/1.0 200 OK\r\n"
    "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip)\r\n"
    .... weitere Texte ....

und die Frage, welche Darstellung du benutzen willst, stellt sich in 
Wirklichkeit gar nicht.

Die Umwandlung in lesbaren Text machst du einmalig mit einer ASCII 
Tabelle (wobei du dich zum Teil auch an der Kommentierung im Code 
orientieren kannst, um deine Übertragung zu kontrollieren). Und dann 
belässt du das auch bei der lesbaren Version!

: Bearbeitet durch Moderator
von Bitflüsterer (Gast)


Bewertung
1 lesenswert
nicht lesenswert
> Wer so einen Unsinn verbrochen hat, sollte mit dem nassen
> Fetzen erschlagen werden!

Lieber mit einem Arduino. Das dauert länger.

von Kilian K. (kellermaaan)


Bewertung
1 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Wer so einen Unsinn verbrochen hat, sollte mit dem nassen Fetzen
> erschlagen werden!
Das dachte ich mir auch!

Bei den ersten Zeilen ist es ja noch klar was da steht durch die 
Kommentare. Aber bei dem dicken Brummer unten halt nicht...

Im Internet gibt es ja genug Konverter aber diese kommen alle nicht mit 
dem Komma und dem "0x" zurecht. Und ehrlich gesagt hab ich jetzt nicht 
viel Lust dies per Hand wegzumachen! Deshalb frage ich...

von Bitflüsterer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Abgesehen von einem simplen Textersatz, der immer noch ein wenig 
langwierig ist, fällt mir folgende dumme Methode ein:

Compiliere die Files und schaue Dir das Ergebnis in einem HEX-Editor an 
- der dann natürlich eine umschaltbare Darstellung in ASCII haben muss. 
Da kopierst Du den String dann heraus. Vorsicht bei Sonderzeichen, die 
kein ASCII-Äquivalent haben.

von Karl H. (kbuchegg) (Moderator)


Bewertung
1 lesenswert
nicht lesenswert
Kilian K. schrieb:

> Und ehrlich gesagt hab ich jetzt nicht
> viel Lust dies per Hand wegzumachen! Deshalb frage ich...

Ich schätze mal, da wirst du durch müssen. Das meiste kann man sowieso 
dann im Text erraten. D.h. selbst wenn du wo einen Überstzungsfehler 
machst, wirst du beim durchlesen des Textes draufkommen. Ein
  <tbbla>
ist mit Sicherheit ein Transkriptionsfehler, das muss
  <table>
heissen (und wird sich dann auch durch Überprüfen in den Bytes 
bestätigen).

Mehr Sorgen macht mir allerdings: Wenn jemand so etwas in einem Beispiel 
anbietet, was hat er dann im Code sonst noch so verbrochen?

:-)
Was du machen kannst:
lass den Web Server das Zeug rausschicken, geh in deinen Browser und 
lass dir dort den Quelltext anzeigen. Dort hast du dann die lesbare 
Version
:-)

von Bernd K. (movin)


Bewertung
3 lesenswert
nicht lesenswert
Kilian K. schrieb:
> Und ehrlich gesagt hab ich jetzt nicht
> viel Lust dies per Hand wegzumachen!

notepad++ ist dein freund...

von Karl H. (kbuchegg) (Moderator)


Bewertung
1 lesenswert
nicht lesenswert
Ha.
Es gibt noch eine Möglichkeit

Du hast den Text ja als Programm-Code vorliegen :-)

Kopier in raus, schreib dir am PC ein simples main() drumherum, welches 
den Text per printf ausgibt (da kannst du dann auch Sonderzeichen schön 
berücksichtigen). Per Command Line Redirection in ein File schreiben 
lassen und vola, du hast zumindest mal die Rohfassung fertig.

Kurz und gut: Mit einem Editor und einem C-Compiler (und einem Bier) 
kann man fast alle Probleme lösen. Was nicht passt, wird eben passend 
gemacht.

: Bearbeitet durch Moderator
von Peter D. (peda)


Bewertung
1 lesenswert
nicht lesenswert
Da muß aber einer viel lange Weile gehabt haben.
Schreibe ein Programm, was dir den Text in eine Datei schreibt.
Dann ersetze darin alle Zeilenumbrüche durch \r\n.
Und dann füge den Text direkt in "" in das C-File ein.

von Kilian K. (kellermaaan)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Was du machen kannst:
> lass den Web Server das Zeug rausschicken, geh in deinen Browser und
> lass dir dort den Quelltext anzeigen. Dort hast du dann die lesbare
> Version

Danke, das ist eine gute Idee! :-D Das werde ich mal machen.

Hättest du vielleicht auch eine Idee, wie ich das dann in dem Code durch 
den lesbaren Text ersetzen kann?

Hab dir vorsichtshalber mal die Datei in den Anhang gepackt, wo das 
ganze HTML Zeug drin steht...

: Bearbeitet durch User
von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Kilian K. schrieb:

> Hättest du vielleicht auch eine Idee, wie ich das dann in dem Code durch
> den lesbaren Text ersetzen kann?

Mit welchem Teil von
  static const unsigned char data__index_html[] =
    "/index.html\x00"
    "HTTP/1.0 200 OK\r\n"
    "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip)\r\n"
    .... weitere Texte ....
hast du Schwierigkeiten?

der 0x00 in der ersten Zeile wird mit einer Escape Sequenz \x00 in einem 
String dargestellt. die 0x0D bzw 0x0A übersetzen sich zu \r und \n.
Ob noch weitere nicht darstellbare ASCII Zeichen vorkommen, hab ich 
nicht untersucht.

von Karl H. (kbuchegg) (Moderator)


Bewertung
1 lesenswert
nicht lesenswert
Den Teil hier
static const unsigned char data__img_sics_gif[] = {
/* /img/sics.gif (14 chars) */
0x2f,0x69,0x6d,0x67,0x2f,0x73,0x69,0x63,0x73,0x2e,0x67,0x69,0x66,0x00,0x00,0x00,

/* HTTP header */
/* "HTTP/1.0 200 OK
" (17 bytes) */
0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d,
0x0a,
/* "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip)
" (63 bytes) */
0x53,0x65,0x72,0x76,0x65,0x72,0x3a,0x20,0x6c,0x77,0x49,0x50,0x2f,0x31,0x2e,0x33,
0x2e,0x31,0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x61,0x76,0x61,0x6e,
0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x70,
0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x77,0x69,0x70,0x29,0x0d,0x0a,
/* "Content-type: image/gif

" (27 bytes) */
0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x69,0x6d,
0x61,0x67,0x65,0x2f,0x67,0x69,0x66,0x0d,0x0a,0x0d,0x0a,
/* raw file data (724 bytes) */
0x47,0x49,0x46,0x38,0x39,0x61,0x46,0x00,0x22,0x00
...
belässt du so wie er ist. Das ist offenbar ein Bild. Da gewinnst du 
nichts, wenn du das in Text überführst.

von Karl H. (kbuchegg) (Moderator)


Bewertung
1 lesenswert
nicht lesenswert
Karl Heinz schrieb:

> belässt du so wie er ist. Das ist offenbar ein Bild. Da gewinnst du
> nichts, wenn du das in Text überführst.

Na ja. Fast.
Den Teil mit dem Filenamen, Servernamen und Content Type könnte man in 
eine Textversion überführen. Das würde die Wartung der Nicht-Bildteile 
vereinfachen.

von A. H. (ah8)


Bewertung
0 lesenswert
nicht lesenswert
Ich hätt's erst mal so probiert:

#include <stdio.h>

static const unsigned char data__index_html[] = {
     , '\0' // <--! 
};

main()
{
        printf("%s\n", data__index_html);
}


Geht natürlich etwas schief, da schon im Text ein '\0' steht, aber man 
sieht erst mal was und man kann's ja ausbauen:

#include <stdio.h>
#include <ctype.h>

static const unsigned char data__index_html[] = {
  
};

main()
{
  int i;
  for (i=0; i<sizeof(data__index_html)/sizeof(*data__index_html); ++i)
    putchar(isprint(data__index_html[i])? data__index_html[i]:'.');
  printf("\n");
}


In die andere Richtung geht’s natürlich auch. Aber wie schon gesagt, das 
ist weder nötig noch besonders geschickt. (Vorsichtig formuliert :-)

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Interessant ist, dass der Autor selber das hier
static const unsigned char data__index_html[] PROGMEM = {
///* /index.html (12 chars) */
//0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x6c,0x00,
//
///* HTTP header */
....

zu dem hier 'übersetzt' hat
"index.html\r\n"

da war er sich offenbar nicht mit sich selbst einig, ob die erste Angabe 
des Filenamens mit einem \0 oder mit \r\n enden soll.
Aber scheinbar ist es ihm dann selbst zu blöd geworden, die Hex-Zahlen 
Version zu warten.

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
A. H. schrieb:

> Geht natürlich etwas schief, da schon im Text ein '\0' steht, aber man
> sieht erst mal was und man kann's ja ausbauen:

Exakt.

Ich hätt es dann so gemacht:
   for (i=0; i<sizeof(data__index_html)/sizeof(*data__index_html); ++i) {
     if( data__index_html[i] == 0x00 )
       printf( "\\0" );
     else if( data__index_html[i] == 0x0D )
       printf( "\\r" );
     else if( data__index_html[i] == 0x0A )
       pritnf( "\\n\"\n\"" );

     else if( isprint( data__index_html[i] )
       putchar( data__index_html[i] );

     else
       putchar( '?' );
   }
und dann sukzessive noch fehlende Sonderzeichen ergänzt. Bei der 
Gelegenheit werden dann auch noch die syntaktisch notwendigen " ergänzt.


Wie schon gesagt: Im Zweifel schreibt man sich eben am PC mal ein kurzes 
Hilfsprogramm, dass einem die langweilige Arbeit abnimmt. Das hat 2 
Vorteile: zum einen spart man sich Arbeit, zum anderen kriegt man Übung.
Die leitzten Feinheiten im Text macht man dann ganz einfach mit der Hand 
im Editor. Es macht jetzt auch keinen Sinn, einen halben Tag in das 
Konvertierprogramm zu investieren. Das Hilfsprogramm soll mit wenig 
Aufwand eine weitgehend fertige Rohfassung liefern.

: Bearbeitet durch Moderator
von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht lesenswert
A. H. schrieb:
> Ich hätt's erst mal so probiert:#include <stdio.h>
>
> static const unsigned char data__index_html[] = {
>    …  , '\0' // <--!
> };
>
> main()
> {
>         printf("%s\n", data__index_html);
> }

Fast! Aber der richtige weg:
printf("%.*s\n", sizeof(data__index_html),data__index_html);

Hoffentlich stimmt der punkt, hab gerade keine zeit zum testen.

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Daniel A. schrieb:
> A. H. schrieb:
>> Ich hätt's erst mal so probiert:#include <stdio.h>
>>
>> static const unsigned char data__index_html[] = {
>>    …  , '\0' // <--!
>> };
>>
>> main()
>> {
>>         printf("%s\n", data__index_html);
>> }
>
> Fast! Aber der richtige weg:
> printf("%.*s\n", sizeof(data__index_html),data__index_html);
>
> Hoffentlich stimmt der punkt, hab gerade keine zeit zum testen.

Was beabsichtigst du damit?
Damit kannst du den \0 nicht austricksen. Denn für %s ist der String 
dort zu Ende. Da hilft dir auch die Angabe einer Feldbreite nichts.

von A. H. (ah8)


Bewertung
0 lesenswert
nicht lesenswert
Daniel A. schrieb:
> Fast! Aber der richtige weg:
> printf("%.*s\n", sizeof(data__index_html),data__index_html);

Stimmt, kannte ich noch gar nicht. (Aber als braver Junge halte ich mich 
von solch üblen Hacks natürlich normalerweise fern und meine Strings 
sind selbstverständlich auch alle richtigt terminiert :-)

von A. H. (ah8)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Daniel A. schrieb:
>> Fast! Aber der richtige weg:
>> printf("%.*s\n", sizeof(data__index_html),data__index_html);
>>
>> Hoffentlich stimmt der punkt, hab gerade keine zeit zum testen.
>
> Was beabsichtigst du damit?
> Damit kannst du den \0 nicht austricksen. Denn für %s ist der String
> dort zu Ende. Da hilft dir auch die Angabe einer Feldbreite nichts.

Stimmt schon, dass Ergebnis ist natürlich das selbe und in beiden Fällen 
nicht die ganze Wahrheit. Aber der Charme dieser Lösung liegt natürlich 
darin, dass ich das originale Feld nicht modifizieren muss. „Richtiger“ 
wird es dadurch natürlich nicht.

: Bearbeitet durch User
von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
"<body bgcolor="white" text="black">\r\n"
Wie mache ich es denn wenn ich wie hier so Design Sachen habe? Da 
meckert er jetzt wegen dem "white"...

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Kilian K. schrieb:
>
"<body bgcolor="white" text="black">\r\n"
> Wie mache ich es denn wenn ich wie hier so Design Sachen habe? Da
> meckert er jetzt wegen dem "white"...

Der meckert nicht wegen dem white, sondern weil du für ein " in einem 
String eine Escpae Sequenz benutzen musst
...
   "<body bgcolor=\"white\" text=\"black\">\r\n"
...

: Bearbeitet durch Moderator
von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Kilian K. schrieb:
>>
"<body bgcolor="white" text="black">\r\n"
>> Wie mache ich es denn wenn ich wie hier so Design Sachen habe? Da
>> meckert er jetzt wegen dem "white"...
>
> Der meckert nicht wegen dem white, sondern weil du für ein " in einem
> String eine Escpae Sequenz benutzen musst
>
>
> ...
>    "<body bgcolor=\"white\" text=\"black\">\r\n"
> ...
> 


Ergo: Konverter mit einem weiteren Fall erweitern (denn das wird oft 
vorkommen)
   for (i=0; i<sizeof(data__index_html)/sizeof(*data__index_html); ++i) {
     if( data__index_html[i] == 0x00 )
       printf( "\\0" );
     else if( data__index_html[i] == '"' )
       printf( "\\\"" );
     else if( data__index_html[i] == 0x0D )
       printf( "\\r" );
     else if( data__index_html[i] == 0x0A )
       pritnf( "\\n\"\n\"" );

     else if( isprint( data__index_html[i] )
       putchar( data__index_html[i] );

     else
       putchar( '?' );
   }

und nochmal generieren lassen.

von Eric B. (beric)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Kilian K. schrieb:
>>
"<body bgcolor="white" text="black">\r\n"
>> Wie mache ich es denn wenn ich wie hier so Design Sachen habe? Da
>> meckert er jetzt wegen dem "white"...
>
> Der meckert nicht wegen dem white, sondern weil du für ein " in einem
> String eine Escpae Sequenz benutzen musst
>
>
> ...
>    "<body bgcolor=\"white\" text=\"black\">\r\n"
> ...
> 

Wobei man Attribute in HTML auch mit '...' statt "..." schreiben kann.
Also:
"<body bgcolor='white' text='black'>\r\n"
Dann brauchste nix escapen :-)

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Kilian K. schrieb:
> Im Internet gibt es ja genug Konverter aber diese kommen alle nicht mit
> dem Komma und dem "0x" zurecht.

ist mir auch aufgefallen, nur wo war dein Problem?

suchen & ersetzen kann fast jeder Texteditor

aus 0x mache [SPACE]
aus ,[SPACE] mache [SPACE]
aus [SPACE][SPACE] mache [SPACE]

und dann klappt es auch mit den I-net Konvertern

: Bearbeitet durch User
von Kilian K. (kellermaaan)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Ergo: Konverter mit einem weiteren Fall erweitern (denn das wird oft
> vorkommen)   for (i=0;
> i<sizeof(data__index_html)/sizeof(*data__index_html); ++i) {
>      if( data__index_html[i] == 0x00 )
>        printf( "\\0" );
>      else if( data__index_html[i] == '"' )
>        printf( "\\\"" );
>      else if( data__index_html[i] == 0x0D )
>        printf( "\\r" );
>      else if( data__index_html[i] == 0x0A )
>        pritnf( "\\n\"\n\"" );
>
>      else if( isprint( data__index_html[i] )
>        putchar( data__index_html[i] );
>
>      else
>        putchar( '?' );
>    }
>
> und nochmal generieren lassen.

Also die Schleife klappt wunderbar! :-) Hab da mal das Array durch 
gejagt und er hat mir alles wunderbar ausgegeben!!!

Dank eurer Hilfe hab ich jetzt alles vom Hex-Müll in lesbaren Text 
umgewandelt.

Also danke!!! :-D

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Kilian K. schrieb:

> Also die Schleife klappt wunderbar! :-) Hab da mal das Array durch
> gejagt und er hat mir alles wunderbar ausgegeben!!!

Was lernen wir daraus?
Anstatt stundenlang nach einem Werkzeug im Web zu suchen, ist es oft 
einfacher sich in ein paar Minuten mal schnell selbst ein Werkzeug 
quick&dirty zu programmieren.

Kommt immer wieder mal vor. Genau darum hab ich auch auf allen Maschinen 
immer auch einen C Compiler in der Hinterhand.

von Karl H. (kbuchegg) (Moderator)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt hats mich mal selber interessiert, was da weltbewegendes im HTML 
drinnen steht :-)
(Ein Tab kommt in den Daten noch vor. Konverter erweitern: 0x09 führt zu 
einer Ausgabe von \t).

Bei dem Ergebnis hätte es die Geheimniskrämerei wirklich nicht gebraucht 
:-)

von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
>> printf("%.*s\n", sizeof(data__index_html),data__index_html);
>>
>> Hoffentlich stimmt der punkt, hab gerade keine zeit zum testen.
>
> Was beabsichtigst du damit?
> Damit kannst du den \0 nicht austricksen. Denn für %s ist der String
> dort zu Ende. Da hilft dir auch die Angabe einer Feldbreite nichts.

Ich hätte schwören können das dass einmal funktionierte, diesmal eine 
Getestete variante:
fwrite(data__index_html, 1, sizeof(data__index_html), stdout);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.