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;
}