2016-08-12 24 views
0

我寫這段代碼:追加數組數據轉換爲字符串

int i = 0; 
br.BaseStream.Position = i; 
armorvalues[i] = br.ReadBytes(0x000E91D4);  

string[] outbyte= new string[0x000E91D4]; 
for (int j=0; j < 0x000E91D4; j++) 
{ 
    outbyte[j] = Convert.ToString(String.Format("{0:X2}", armorvalues[0][j])); 
} 

現在,因爲這是一個數組,我想對整個數據的一些算法操作,我需要將其轉換成字符串。我需要將它追加到單個字符串中。我該怎麼辦?

+0

也許'string.Concat'? –

+2

您確定需要將其轉換爲字符串來處理?您所顯示的數據看起來並不像它會從這樣的解釋中受益。 – Oliver

+1

你想達到什麼效果?我不清楚將**字節數組**轉換爲**字符串數組**後面的邏輯嗎?數組中的每個字符串應該包含什麼?如果您需要通過連接其十六進制表示將字節數組轉換爲字符串,則可以簡單地執行'String.Join(「」,bytes.Select(b => $「{b:X2}」))''。 –

回答

0

看看在StringBuilder

StringBuilder sb = new StringBuilder(0x000E91D4*2); // length * 2 since every byte is going to be represented by 2 chars 
for (int j=0; j < 0x000E91D4; j++) 
{ 
    sb.Append(Convert.ToString(String.Format("{0:X2}", armorvalues[0][j]))); 
} 
string yourString = sb.ToString(); 

編輯: 我不知道,string.Join重載需要一個IEnumerable的,它更優雅,去與吉拉德綠色的解決方案,或者如果你不這樣做希望通過值一個空的空間分隔(」「)只是做

string output = string.Concat(armorvalues[0].Select(item => String.Format("{0:X2}", item))); 
0

不知道爲什麼你想這樣做,也許如果你清楚地解釋你的需要,然後它會是不錯的。但是,對於你的問題:

您可以使用string.Join

var strValue = string.Join(" ", outbyte); 

,而是外觀,你也可以後做的:

var strValue = string.Join(" ", armorvalues[0].Select(item => String.Format("{0:X2}", item)));