2014-03-03 36 views
0

我遇到的問題是,當我將Queue<byte>列表轉換爲字符串進行比較時,會在字符之間插入某種空白。但是,我不認爲它們是實際的空白字符,因爲Queue只保留七個值,並且在調試時我仍然能夠看到七個字符值。見圖片:使用BitConverter時插入的空白

相關代碼:

Queue<byte> bufKeyword = new Queue<byte>(7); 

    // Remove old byte from queue and add new one 
    if (bufKeyword.Count == 7) bufKeyword.Dequeue(); 
    bufKeyword.Enqueue((byte)fsInput.ReadByte()); 

    // Check buffer string for match 
    StringBuilder bufKeywordString = new StringBuilder(); 

    foreach (byte qByte in bufKeyword) { 
     bufKeywordString.Append(Encoding.ASCII.GetString(BitConverter.GetBytes(qByte))); 
    } 

    string _bufKeywordString = bufKeywordString.ToString(); 
    Console.WriteLine("{0}", _bufKeywordString); //DEBUG - SEE IMAGE 

    StringBuilder bufWriteString = new StringBuilder(); 
    if (_bufKeywordString.StartsWith("time=")) //Does not work because of 'whitespace' 
    { 
     for (int i = 1; i < 25; i++) { bufWriteString.Append(fsInput.ReadByte()); }  // Read next 24 bytes 
     fileWriteQueue.Enqueue(bufWriteString.ToString());        // Add this data to write queue 
     fileWriteQueueCount++; 
     fileBytesRead += 24;               // Change to new spot in file 
    } 
+0

看起來像它的UTF-16,而不是ASCII。 – Matthew

回答

3

沒有BitConverter.GetBytesbyte說法。 byte被轉換爲short,並且BitConverter.GetBytes(short)返回兩個元素的數組。

所以不是

bufKeywordString.Append(Encoding.ASCII.GetString(BitConverter.GetBytes(qByte))); 

嘗試

bufKeywordString.Append(Encoding.ASCII.GetString(new byte[] {qByte}); 
+0

非常感謝!我現在看到我誤認爲參數類型的返回類型。 – Rawrcasm