2

4バイトの長さのバイナリファイルにintのリストを書き込む必要があるため、バイナリファイルが正しいことを確認する必要があり、次のようにします。

using (FileStream fileStream = new FileStream(binaryFileName, FileMode.Create)) // destiny file directory.
{
  using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
  {
    for (int i = 0; i < frameCodes.Count; i++)
    {
      binaryWriter.Write(frameCodes[i]);
      binaryWriter.Write(4);
    }
    binaryWriter.Close();
  }
}

この行で:binaryWriter.Write(4);私はサイズを与えます、それは正しいですか?

4

2 に答える 2

2

この行で「binaryWriter.Write(4);」サイズをあげますよね?

いいえ、正しくありません。この行binaryWriter.Write(4);は整数4をストリームに書き込みます(たとえば、のようなもの00000000 00000000 00000000 00000100)。

この行は正しいです:binaryWriter.Write(frameCodes[i]);。整数frameCodes[i]をストリームに書き込みます。整数には4バイトが必要なため、正確に4バイトが書き込まれます。

もちろん、リストにXエントリが含まれている場合、結果のファイルのサイズは4*Xになります。

于 2011-04-15T14:15:20.230 に答える
1

MSDNによる

これらの2つはあなたを助けるかもしれません。私はそれが答えに近いわけではないことを知っていますが、概念を理解するのに役立ちます

using System;

public class Example
{
   public static void Main()
   {
      int value = -16;
      Byte[] bytes = BitConverter.GetBytes(value); 

      // Convert bytes back to Int32.
      int intValue = BitConverter.ToInt32(bytes, 0);
      Console.WriteLine("{0} = {1}: {2}", 
                        value, intValue, 
                        value.Equals(intValue) ? "Round-trips" : "Does not round-trip");
      // Convert bytes to UInt32.
      uint uintValue = BitConverter.ToUInt32(bytes, 0);
      Console.WriteLine("{0} = {1}: {2}", value, uintValue, 
                        value.Equals(uintValue) ? "Round-trips" : "Does not round-trip");
   }
}

byte[] bytes = { 0, 0, 0, 25 };

// If the system architecture is little-endian (that is, little end first),
// reverse the byte array.
if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);

int i = BitConverter.ToInt32(bytes, 0);
Console.WriteLine("int: {0}", i);
于 2011-04-15T14:17:38.103 に答える