Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 28th, 2012  |  syntax: None  |  size: 0.90 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Can Mono DataConvert be used to read a 3-byte integer?
  2. public Region(string regionFile)
  3. {
  4.     var conv = DataConverter.BigEndian;
  5.     var chunks = new Chunk[Chunk.MaxLocations];
  6.     using (var fs = File.OpenRead(regionFile))
  7.     {
  8.         var buffer = new byte[4096];
  9.         fs.Read(buffer, 0, buffer.Length);
  10.  
  11.         // Read chunk locations
  12.         for (int i = 0; i < Chunk.MaxLocations; ++i)
  13.         {
  14.             chunks[i] = new Chunk(conv.ToInt24(buffer, i * 4), buffer[i * 4 + 3]);
  15.         }
  16.     }
  17. }
  18.        
  19. public override int GetInt24(byte[] data, int index)
  20. {
  21.     if (data == null)
  22.         throw new ArgumentNullException("data");
  23.     if (data.Length - index < 3)
  24.         throw new ArgumentException("index");
  25.     if (index < 0)
  26.         throw new ArgumentException("index");
  27.  
  28.     int ret = 0;
  29.     byte* b = (byte*)&ret;
  30.  
  31.     for (int i = 0; i < 3; i++)
  32.         b[2 - i] = data[index + i];
  33.  
  34.     return ret;
  35. }