データを読み取ろうと奇妙な問題
-
18-09-2019 - |
質問
私が書くときます:
var tagType = _reader.ReadByte();
while (tagType != 8)
{
var skip = ReadNext3Bytes() + 11;
_reader.BaseStream.Position += skip;
tagType = _reader.ReadByte();
}
...それは働くのですが、私が書くときます:
var tagType = _reader.ReadByte();
while (tagType != 8)
{
_reader.BaseStream.Position += ReadNext3Bytes() + 11;
tagType = _reader.ReadByte();
}
...それは動作していない、と私はなぜ理解できない - 私は予期しない結果を取得しています。 ReadNext3Bytes
方法HERESに:
private long ReadNext3Bytes()
{
try
{
return Math.Abs((_reader.ReadByte() & 0xFF) * 256 * 256 + (_reader.ReadByte() & 0xFF)
* 256 + (_reader.ReadByte() & 0xFF));
}
catch
{
return 0;
}
}
なぜことを、どのように私はそれを修正することができますか?
感謝します。
解決
のポジションのはののreadByte の通話中に変更されるため、
それは、あなたが見るものは、この場合と同様でどうなります:
int position = 1;
position += (position = 2) + 3;
Assert.AreEqual(6, position);
所属していません StackOverflow