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 +」是考慮到空終止字符串在讀取序列的末尾。
'似乎停止了程序的執行 - 你是什麼意思,它是否會崩潰,給出錯誤,永遠循環(不太可能),會發生什麼? –
是否有解決方案中找到的原因[轉換爲字節的字符串](http://stackoverflow.com/questions/472906/converting-a-string-to-byte-array)並不意味着您的需求?爲什麼重新發明輪子? – mason
@mason:我相信不起作用的原因是因爲它實際上不處理填充緩衝區。 OP正在緩衝字節,並且必須填充它們以正確對齊它們,這就告訴我這種方法會以多種不同的值運行多次。 –