Hi Jürgen...habs mal neu strukturiert ist wohl beim Einfügen verlorengegangen
Code:
size_t UChar2Hex7String( const unsigned char *source, size_t sourceLen, char *dest) { 
	dest[0] = '\0'; 
	char *p = dest; 

	for (size_t i = 0; i < sourceLen; i += 8 ) { 
		unsigned char tmpbuffer[10]; 
		memset(tmpbuffer, 0, sizeof tmpbuffer); 
		unsigned char mask = 0; 
		for (size_t j = 0; j < 8 && i + j < sourceLen; j++) { 
			unsigned char ch = source[i + j]; 
			ch >>= j; 
			tmpbuffer[j] = ch; 
			if (j > 0) { 
				ch = source[i + j]; 
				ch &= mask; 
				ch <<= 8 - j; 
				tmpbuffer[j - 1] |= ch; 
			} 
			mask = (mask << 1) | 1; 
		} 
		for (j = 0; j < 7 && i + j < sourceLen; j++) { 
			sprintf(p,"%02x", tmpbuffer[j]); 
			p += 2; 
		} 
	} 
	return(p - dest); 
}
Hier gibt es zu der Umwandlung ein Beispiel:
http://www.dreamfabric.com/sms/hello.html

habe mich gerade man ein bisschen in das Thema eingearbeitet...
Message: Testtext

Code:
Ascii  Hex  Bin
T      54   01010100
e      65   01100101
s      73   01110011
t      74   01110100
t      74   01110100
usw..
Man beachte, dass sich die verwendeten Asciizeichen alle in einem Raum befinden, der eine führende Null hat. Diese lässt man genauso wie in der Dezimalrechnung einfach weg.
Code:
Ascii  Hex  Bin
T      54   1010100
e      65   1100101
s      73   1110011
t      74   1110100
t      74   1110100
usw..
Jetzt spiegeln wir die einzelnen Bytes.
Code:
Ascii  Hex  GespiegeltBin
T      54   0010101
e      65   1010011
s      73   1100111
t      74   0010111
t      74   0010111
usw..
hängen es hintereinander und gruppieren byteweise neu.
Code:
00101011.01001111.00111001.01110010.111...
Die neu gruppierten Bytes werden nun wieder gespiegelt und stehen uns in alt bekannter Schreibweise zur verfügung.
Code:
GespiegeltBin Hex
11010100       D4
11110010       F2
10011100       9C
01001110       4E
Als Beispieltext habe ich mal den von Nobbi hergenommen. (http://www.nobbi.com/sms_pdu.htm)


Gruss
Michael


Jetzt hats doch glatt bei mir die Formatierung auch verrissen?!