我目前编写了一个代码,用于将字符串转换为字节数组,然后将这些字节写入缓冲区字节数组。但是,由于某种原因,代码的对齐部分似乎停止了程序的执行。我已经足够测试它了解它是“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 +”用于考虑读取序列末尾的空终止字符串。
答案 0 :(得分:0)
好吧,问题是我没有为写缓冲区设置对齐,因此它通过模运算给出除零错误,因为字节对齐被预设为0 ......