2014-02-16 161 views
-1

在我的任務(仍然開始:))更好地編程我偶然發現了一些我無法回答的問題。unsigned long(u32_t)轉換爲字符串數組

我的任務是將二進制/十六進制數據(在數組中)轉換爲字符串數組。到目前爲止,我只設法轉換並打印十六進制數據的「MSB」。

這是我目前的代碼。建設性的批評是高度讚賞:)

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    int i = 0; 

    unsigned long rawdata[] ={0x60,0x100,'\0'}; 

    char stringForRawdata[250]; 

    char finalString[250]; 

    while(i<2) 
    { 
     sprintf(stringForRawdata,"%lx",*(rawdata+i)); 

     //sprintf(finalString,"%s",stringForRawdata); 

     finalString[i] = *(stringForRawdata); 

     printf("\nfinalString[%d] = %s",i,finalString+i); 

     printf("\nrawdata = %lx for i = %d\n",*(rawdata+i),i); 

     i = i+1;  

    } 
    printf("\n stringForRawdata = %s\n",stringForRawdata); 
    printf("\n\n finalString array is %s\n",finalString); 
} 

輸入是unsigned long rawdata[] ={0x60,0x100,'\0'};

預期的輸出是一個字符串數組{60,100,\0}{0x60,0x100,\0}

的問題是,我只能得到最左邊的數字來我的字符串數組。

+0

如果你想要審查,你應該在代碼審查後發佈。 – this

+0

給我們你期待的輸入和輸出。 – Allan

+0

我編輯了我的帖子^^ – nciacrklo

回答

0

您的問題與行開始

finalString[i] = *(stringForRawdata); 

finalString是字符數組所以finalString [i]是一個單獨的字符。所以你每次在循環中只設置一個字符在finalString中。您需要使用strcat將rawdata字符串連接到finalString。

+0

謝謝Tim!儘管我努力獲得我真正想要的東西,但我學到了一些新東西。無論如何,現在我可以將十六進制數組放到字符串數組中,但是,每個數字都分配給了每個元素。所以如果我的十六進制數組有2個元素,我的字符串數組獲得4. 我想我可以在此工作,但其他信息/幫助仍然很棒! – nciacrklo