バイナリ形式でファイルを読む方法を知りたい。TIFFヘッダーファイルの読み取り方法c#?
たとえば、TIFF画像ファイルは、0000 4949 002A 0000の次のバイナリ形式を持つことがあります。 これらの値をC#でどのように取得できますか?
バイナリ形式でファイルを読む方法を知りたい。TIFFヘッダーファイルの読み取り方法c#?
たとえば、TIFF画像ファイルは、0000 4949 002A 0000の次のバイナリ形式を持つことがあります。 これらの値をC#でどのように取得できますか?
が、私は通常、16進形式でファイルを読み込む方法です、あなたが必要として、ヘッダーの変更:
using System;
using System.Linq;
using System.IO;
namespace FileToHex
{
class Program
{
static void Main(string[] args)
{
//read only 4 bytes from the file
const int HEADER_SIZE = 4;
byte[] bytesFile = new byte[HEADER_SIZE];
using (FileStream fs = File.OpenRead(@"C:\temp\FileToHex\ex.tiff"))
{
fs.Read(bytesFile, 0, HEADER_SIZE);
fs.Close();
}
string hex = BitConverter.ToString(bytesFile);
string[] header = hex.Split(new Char[] { '-' }).ToArray();
Console.WriteLine(System.String.Join("", header));
Console.ReadLine();
}
}
}
System.IO.File.ReadAllBytes()関数はファイル全体を読み取ります。私は、限られたバイト数を読み取る方法を探しています。 – 1AmirJalali
[OK]を編集すると、わずか数バイトの読み込みが行われます。 –
'string str = bytesFile.Aggregate(" "、(s、b)=> s + = b.ToString(" X2 ")); ' –
あなたは配列にバイトを読み取るためにSystem.IO.FileクラスのReadAllBytesメソッドを使用することができます。
System.IO.FileStream fs = new System.IO.FileStream(@"C:\Temp\sample.pdf", System.IO.FileMode.Open, System.IO.FileAccess.Read);
int size = 1024;
byte[] b = new byte[size];
fs.Read(b, 0, size);
ファイルサイズが大きい場合(たとえば300メガバイトを超える場合)読み込むバイト数を制限する方法はありますか? – 1AmirJalali
System.IO.File.ReadAllBytes()関数は、ファイル全体を読み取ります。私は、限られたバイト数を読み取る方法を探しています。 – 1AmirJalali
ファイルの最初の1024バイトを読み取るようにコードを修正しました。 –
私はLibTIFF.Net、http://bitmiracle.com/libtiffを使用していないが、かなり完全であるように思われます。
ファイルをバイトとして読み取る代わりに、ヘッダーをデコードするほうがずっと簡単です。ここで
私は現在LibTIFF.Netを使用していますが、TIFFヘッダーファイルで「バイトオーダー」を表示できるものは見つかりませんでした。 – 1AmirJalali
'バイト[] BUF =新しいバイト[???]。 –
このスニペットを試してみたところ、 – 1AmirJalali
FYI - これはTIFFの正しいヘッダー形式ではありません。 49 49 2a 00(Intelバイトオーダー)または4d 4d 00 2a(Motorolaバイトオーダー)のいずれかであり、あなたの質問にあるものではありません。 – plinth