C için AMQP ileti kitaplığı, bir C dizesini alan ve onu amqp_cstring_bytes
ile çalışmak için kendi bayt biçimine dönüştüren bir işleve sahiptir. Bayt biçimini almak ve bir C dizesine dönüştürmek için bu işlevin bir tersi var mı?amqp_cstring_bytes öğesinin C dizesine dönüştürülmesi
1
A
cevap
2
Sen (char *) <amqp_bytes_t bytes>.bytes
veya daha gelişmiş fonksiyonu like this kullanabilirsiniz (sadece php özgü aşağıdaki kodu gibi malloc()
ile olan emalloc()
değiştirin):
char *stringify_bytes(amqp_bytes_t bytes)
{
/* We will need up to 4 chars per byte, plus the terminating 0 */
char *res = malloc(bytes.len * 4 + 1);
uint8_t *data = bytes.bytes;
char *p = res;
size_t i;
for (i = 0; i < bytes.len; i++) {
if (data[i] >= 32 && data[i] != 127) {
*p++ = data[i];
} else {
*p++ = '\\';
*p++ = '0' + (data[i] >> 6);
*p++ = '0' + (data[i] >> 3 & 0x7);
*p++ = '0' + (data[i] & 0x7);
}
}
*p = 0;
return res;
}
, RabbitMQ-c den void amqp_dump(void const *buffer, size_t len);
işleve bir görünüm vermek.
'(char *) .bytes 'aslında mükemmel bir şekilde çalıştı. Teşekkür ederim. –
Shiri