2012-03-18 188 views
0

如果我從源頭獲取8位數據,並且將這8位數據放入一個字節中,那麼我如何將這個字節存儲起來?每個字節都是一個消息的一部分(曾經是一個字符串),我不知道會有多少字節 - 因此使用字節數組並不是真正的選擇。我可以將它存儲在一個字符串中嗎?我希望能夠在獲取所有字節後重新組裝字符串,我將如何執行此操作?將字節值存儲在字符串中?將字節轉換爲字符串?

使用下面的方法,使8位轉換成字節..

public byte GetByte(BitArray array){ 
     Byte byt = 0; 
     for (int i = 7; i >= 0; i--){ 
      byt = (byte)((byt << 1) | (array[i] ? 1 : 0)); 
     } 
     return byt; 
    } 

我可以這樣稱呼它......

byte valueInByte = GetByte(bitsOfMessage); 

我想我能做到這一點.. 。

bytesOfTheMessage += (valueInByte.ToString() + "+"); //bytesOfTheMessage is a string 

但是然後...我有一串字節值的字符串...我需要提取和轉換,但我轉換到什麼。我得到的第一個值是「138」,它應該是數字2--當轉換回它的原始形式時。我可以告訴所有正確的值都存在於字符串中,因爲有一個模式,它與我轉換成位的原始字符串一致..對我應該做什麼有任何想法?

+1

字節數組怎麼樣?或列表? – 2012-03-18 06:12:33

+0

@MitchWheat問題是我不知道我會回來(總數)的字節數..你不能只是擴大現場的字節數組..你必須不斷地做一個新的一個... ... – BigBug 2012-03-18 06:14:11

+1

這是添加一個字符串沒有什麼不同(它們是不可變的) – 2012-03-18 06:15:14

回答

1

好吧,如果你想/需要將它們放在一個字符串(雖然它可能不是存儲數據的最有效的方法,如果你真的只是用它作爲存儲),你可以做沿着這些東西行:

例如,這段代碼將打印出的字符「a」

 char[] ac = { (char)(byte)97 }; 
     string s = new String(ac); 
     Console.WriteLine(s); 
(誰的ASCII碼是十進制97需要注意的是在127以上的任何值顯示爲「?」)

甲現成編譯示例程序如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 

namespace ByteTest 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     char[] ac = { (char)(byte)97 }; //converts it to a character 
     string s = new String(ac); //converts it to a string 
     Console.WriteLine(s); //writes 'a' 
     Thread.Sleep(10000); //displays the 'a' for 10 seconds, then finishes executing 
    } 
} 
} 

爲了您的具體情況,你可以修改它是下列

string Message = ""; 
... 
char[] ac = { (char)valueInByte }; 
string s = new String(as); 
Message += s; 
+0

嗯......我得到的值「138」回......在原來的字符串值是2 though..i必須從我回來的字節模式做錯事..,我可以告訴這是正確的數據...但是..我不知道138是2 ...? – BigBug 2012-03-18 06:33:01

+0

用十六進制編輯器檢查原始文件。這可能是因爲你正在以偏移量抓取字節。此外,請確保您正在查看的'2'字符以ascii編碼,這是一個8位字符編碼(實際上是7位,因爲符號位未使用並呈現爲'?' - 如果您獲得值128以上的無符號/負符號,這意味着你抓住無效的字符) – Avan 2012-03-18 07:15:10

+0

我認爲你是對的..我想我發現了一個「?」 – BigBug 2012-03-18 16:10:28

2

你爲什麼不使用List<byte>?它會隨着您添加更多字節而動態增長。然後你可以將它解碼成一個字符串。

相關問題