2016-10-05 85 views
0

我有一個base 64編碼的字符串,我想解碼。 它看起來像這樣:Base 64 decode在C中返回NULL

VGhpcyBpcyBhIGZpbGUgdGhhdCBJIHdhbnQgdG8gZGVjb2Rl 

當我做..

gsize *out_len; 
unsigned const char *decoded; 
decoded = g_base_64_decode(myString, out_len); 

,並打印出我的解碼的字符串,我得到空也,我得到的斷言: '!out_len = NULL' 失敗來自Glib

這是怎麼發生的?如何使用此功能正確解碼我的字符串? https://developer.gnome.org/glib/stable/glib-Base64-Encoding.html#g-base64-decode-step

+3

您是否爲'out_len'分配了內存? – Barmar

+1

'out_len'點無處。更換'gsize * out_len;'和'gsize out_len;'和'g_base_64_decode(MyString的,out_len);'和'g_base_64_decode(MyString的,與out_len);' –

+0

@squeamishossifrage:發表它的一個答案! –

回答

2

out_len參數是輸出參數。這意味着您通常堆棧這樣上創建gsize類型的out_len變量:

gsize out_len; 

,然後調用函數傳遞指針上述變量(即傳遞的的地址它:&out_len),例如:

decoded = g_base_64_decode(myString, &out_len);