2014-05-07 18 views
1

我目前寫了一個代碼,用於將字符串轉換爲字節數組,然後將這些字節寫入緩衝區字節數組。但是,由於某種原因,代碼的對齊部分似乎停止了程序的執行。我已經測試它足以知道它是「int DynamicAlign ..」部分,但我無法弄清楚它爲什麼會發生。無法使用對齊方式將字符串寫入字節數組?

public void WriteStr(string myString) 
{ 
    byte[] myBytes = System.Text.Encoding.ASCII.GetBytes(myString); 

    for(int i = 0; i < myBytes.Length; i ++) 
    { 
     Buffer[ BytePeek ] = myBytes[ i ]; 
     BytePeek ++; 
    } 

    int DynamicAlign = ((myBytes.Length + 1) % ByteAlign != 0) 
     ? ByteAlign - ((myBytes.Length + 1) % ByteAlign) 
     : 0; 
    BytePeek += (ushort)(1 + DynamicAlign); 
} 

如果你不知道字節對齊是如何工作的,我發現這是額外的信息:http://pastebin.com/tXzLWpBG

額外的「+ 1」和「1 +」是考慮到空終止字符串在讀取序列的末尾。

+3

'似乎停止了程序的執行 - 你是什麼意思,它是否會崩潰,給出錯誤,永遠循環(不太可能),會發生什麼? –

+0

是否有解決方案中找到的原因[轉換爲字節的字符串](http://stackoverflow.com/questions/472906/converting-a-string-to-byte-array)並不意味着您的需求?爲什麼重新發明輪子? – mason

+0

@mason:我相信不起作用的原因是因爲它實際上不處理填充緩衝區。 OP正在緩衝字節,並且必須填充它們以正確對齊它們,這就告訴我這種方法會以多種不同的值運行多次。 –

回答

0

好了,問題是,我沒有設置對齊方式寫緩衝區,因此零錯誤與模操作了劃分,因爲字節對齊預設爲0 ...