8bit -> 7bit Zeichen Codierung für PDU Modus für Handys
Hi @all,
habe jetzt bestimmt mir schon zich Codes angeschaut und auch bestimmt einige erklärungen... nur ich raff es einfach nicht.
Wie ich an ein Handy per Uart die Daten für das SMSC & Empfänger einstelle habe ich bereits hinbekommen. 8bit Zeichen -> 4bit BCD gepackt und dann als Hex an das Handy ok. Aber wie wandel ich jetzt ein Zeichen meinetwegen 'H' was ja als 1 byte mit 8 bit vorliegt in 7bit ?!
Gruß Dennis
P.S.: Es geht von der sache her um folgendes: http://www.nobbi.com/sms_pdu.htm
8 zu 7 Bit. Auszug aus Sourcen
Hi,
ich hoffe das hilft Dir weiter.
Gruß
Jürgen
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;
}