2017-03-23 70 views
0

我需要轉換這個字節字符串中的不必要的信息:當我轉換成字符串字節有很多的C#

var smallDCWBytes = new byte[] 
     { 
       0xFE, 0x00, 0x00, 0xEF, 0xFF, 0xF8, 0x24, 0x16, 0x01, 0x04, 0x00, 0x00, 0x66, 0x37, 0x58, 0xCA, 
       0xB8, 0x82, 0x00, 0x80, 0x53, 0x6D, 0x61, 0x6C, 0x6C, 0x20, 0x44, 0x43, 0x57, 0x20, 0x52, 0x65, 
       0x63, 0x65, 0x69, 0x76, 0x65, 0x64 
     }; 

var localDCWResponseText = System.Text.Encoding.ASCII.GetString(smallDCWBytes).Trim(); 

這是回答我所得到的: 」 \ 0 \ 0? ?$ \ u0016 \ u0001 \ u0004 \ 0 \ 0f7X ??? \ 0?小DCW接收「

我只需要」小DCW接收「, 如何更好的方式來做到這一點?

+1

你想將幫助該字符串的一個例子。 –

+0

提供的示例字節很奇怪(0xFE,0x00和0xFF字節) - 你確定這是一個真正的ASCII字符串嗎?開始看起來有點像UTF BOM,但它不是我知道的BOM。 – Robert

+2

問題是數據的第一部分既不是ASCII也不是任何其他衆所周知的編碼。而且我們不知道如何確定_where_所需的字符串將會開始。您需要添加一些上下文:您知道這些數據來自哪裏嗎?任何機會_你知道你想要的字符串在哪個字節開始? –

回答

1

其實它正在做什麼請求,因爲它正在轉換你的數組的每個字節。 您可以使用:

var smallDCWBytes = new byte[] 
    { 
      0x53, 0x6D, 0x61, 0x6C, 0x6C, 0x20, 0x44, 0x43, 0x57, 0x20, 0x52, 0x65, 
      0x63, 0x65, 0x69, 0x76, 0x65, 0x64 
    }; 

VAR localDCWResponseText = System.Text.Encoding.ASCII.GetString(smallDCWBytes);

或者,如果你被迫使用數組,你的情況下做這樣的事情:

var smallDCWBytes = new byte[] 
    { 
      0xFE, 0x00, 0x00, 0xEF, 0xFF, 0xF8, 0x24, 0x16, 0x01, 0x04, 0x00, 0x00, 0x66, 0x37, 0x58, 0xCA, 
      0xB8, 0x82, 0x00, 0x80, 0x53, 0x6D, 0x61, 0x6C, 0x6C, 0x20, 0x44, 0x43, 0x57, 0x20, 0x52, 0x65, 
      0x63, 0x65, 0x69, 0x76, 0x65, 0x64 
    }; 

var localDCWResponseText = System.Text.Encoding.ASCII.GetString(smallDCWBytes).Substring(21,18); 
+0

我需要使用數組,因爲我收到了很多類型的命令。我試圖用你的建議,但不工作 –

+0

你可以嘗試使用你的數組和:var localDCWResponseText = System.Text.Encoding.ASCII.GetString(smallDCWBytes.Skip(21).Take(18).ToArray()); – ArenaLor