Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中将二进制文件读取为16字节十六进制段?_C#_Hex - Fatal编程技术网

如何在C#中将二进制文件读取为16字节十六进制段?

如何在C#中将二进制文件读取为16字节十六进制段?,c#,hex,C#,Hex,我对C#很陌生,但我必须使用这种语言,因为它是项目的一部分。 我所做的基本上是一个特定的文件拆分/合并。 当找到一个特定的头时,程序将知道在哪里拆分,并且文件必须使用16位对齐,因此我必须将其作为十六进制的“16字节字符串”来读取,如 +...p......0... 必须理解为 2B 00 00 00 70 00 00 00 0D 00 00 00 30 00 00 00 由于编码/字符集问题,我不想将其作为字符串读取。 你能给我提些什么建议吗?我想一个问题是每次读16字节可能很慢,因为我

我对C#很陌生,但我必须使用这种语言,因为它是项目的一部分。 我所做的基本上是一个特定的文件拆分/合并。 当找到一个特定的头时,程序将知道在哪里拆分,并且文件必须使用16位对齐,因此我必须将其作为十六进制的“16字节字符串”来读取,如

+...p......0...
必须理解为

2B 00 00 00 70 00 00 00 0D 00 00 00 30 00 00 00 
由于编码/字符集问题,我不想将其作为字符串读取。
你能给我提些什么建议吗?我想一个问题是每次读16字节可能很慢,因为我试着在C++中做一个FRAM缓冲区,而且它不快——但是我想不出其他的方法来做。

< P>这是我现在写的代码。这是可行的,但我认为效率不高

        int byteSize = 16;
        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            var buffer = new byte[byteSize]; // in this buffer I'm saving the 16 bytes read
            while (fs.Read(buffer, 0, byteSize) > 0)
            {
                string temp = System.Text.RegularExpressions.Regex.Replace(ByteArrayToHexViaLookup32(buffer), ".{2}", "$0 ");
                Console.WriteLine(temp);
            }
        }
对于十六进制转换,我使用了“ByteArrayToHexViaLookup32”函数,我在这个网站上找到了这个函数,它非常快速高效。 程序将要读取的文件大约为700-800千字节。 正则表达式只用于控制台可见性/调试(每个字节添加一个空格),因此它不会很快出现


我的CPU很快达到30%,它在2/3秒内完成了这个过程,这就是为什么我说这可能不是一个有效的方法。(我有一个6700HQ,所以我认为在一个2 Duo上,运行这个程序的CPU需要更多的时间)

你可以使用这个方法。流已经有一个内部缓冲区,谢谢。我尝试使用FileStream函数来实现它,它似乎可以工作,但效率不高。还有其他建议吗?