2011-08-10 26 views
-1

我需要反轉這個功能,它是用來表示十六進制值隱蔽字符串爲char表示反相功能(從焦炭到十六進制字符串)

char * extochar(char * in, int inLen){ 
    int i,k; 
    int resInt[inLen/2]; 
    char * resChar=malloc(inLen/2); 

    k=0; 
    for(i=0; i<inLen/2; i=i++){ 
     resInt[k]=chartoint(in[i*2])<<4; 
     resInt[k]+=chartoint(in[(i*2)+1]); 
     k++; 
    } 

    for(k=0; k<inLen/2;k++){ 
     resChar[k]=(char)resInt[k]; 
    } 
    return resChar; 
} 

注:有效輸入僅由1234567890abcdef字符串,其長度。我能夠顛倒Cicle的第二個(很容易),但不是第一個!

+2

你到目前爲止嘗試過什麼?究竟是什麼導致你的問題?也請嘗試澄清你想要的功能,現在很難理解你想要什麼。 –

+2

'i = i ++'在你的for循環中是亂碼 – Dipstick

+0

什麼是char表示?你是否希望將十六進制字符串轉換爲十進制字符串?看看'strtol'和'sprintf' – Dave

回答

0

獲取您想要用十六進制表示的內存的字符指針。爲字符串結果分配一個char []緩衝區。

呼叫的sprintf與格式:

sprintf(stringBufferPtr, "%02hxx", charToTranslatePtr) 

您可以通過stringbufferptr/chartotranslateptr爲了在時間做多個字符,如果你轉換uint64_t中或太過使用一些基本指針運算循環。

+0

這是非常有用的,下面的實際工作,因爲我想,但我有幾個更多的疑問: unsigned char * fc = extochar(「0841」,4); int fc_len = 2; //如何從fc中計算出來?對於(i = 0; i UnableToLoad

相關問題