[英]GLib API to convert hexadecimal string to ASCII string?
我不敢相信在 GLib 中沒有 API 可以做到這一點,現在我只發現人們在做自己的轉換,比如這里和這里(函數名為“解碼”) 。 我真的很想在一個簡單的 GLib 調用中找到一種方法,但如果沒有辦法,上述方法對我不起作用,因為前者是 C++(我使用的是 C/GObject)和后者似乎不能完美地工作(我對結果的長度有疑問)。
TIA
如前所述,這有點不常見。 如果你有一個足夠短的十六進制字符串,你可以在它前面加上0x
並使用strtoll()
。 但是對於任意長度的字符串,這里是 C function:
char *hex_to_string(const char *input)
{
char a;
size_t i, len;
char *retval = NULL;
if (!input) return NULL;
if((len = strlen(input)) & 1) return NULL;
retval = (char*) malloc(len >> 1);
for ( i = 0; i < len; i ++)
{
a = toupper(input[i]);
if (!isxdigit(a)) break;
if (isdigit(a)) a -= '0';
else a = a - 'A' + '\10';
if (i & 1) retval[i >> 1] |= a;
else retval[i >> 1] = a<<4;
}
if (i < len)
{
free(retval);
retval = NULL;
}
return retval;
}
我不是 100% 確定您所說的“十六進制字符串”是什么意思,但可能這個線程會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.