从指定的偏移量中获取十六进制代码 - C#
Take hex code from specified offset - C#
我正在编写一个应用程序,它可以处理文件的十六进制,但不能处理所有文件,而只能处理具有指定偏移量的文件。到目前为止,我正在使用从此处获取的函数,但在我的情况下效果不佳。
public static string HexStr(byte[] p)
{
char[] c = new char[p.Length * 2 + 2];
byte b;
c[0] = '0'; c[1] = 'x';
for (int y = 0, x = 2; y < p.Length; ++y, ++x)
{
b = ((byte)(p[y] >> 4));
c[x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
b = ((byte)(p[y] & 0xF));
c[++x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
}
return new string(c);
}
byte[] byVal;
using (Stream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
BinaryReader brFile = new BinaryReader(fileStream);
fileStream.Position = key;
byte[] offsetByte = brFile.ReadBytes(0);
string offsetString = HexStr(offsetByte);
byVal = brFile.ReadBytes(16);
}
有人可以提出这个问题的任何其他解决方案吗?
P.S。此代码采用指定偏移量的十六进制文件(fileStream.Position=key
"key" 是偏移量),这是我的弱点
试试这个代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
const string path = @"C:\temp\test.txt";
static void Main(string[] args)
{
long offset = 25;
long key = offset - (offset % 16);
using (Stream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
BinaryReader brFile = new BinaryReader(fileStream);
fileStream.Position = key;
List<byte> offsetByte = brFile.ReadBytes(16).ToList();
string offsetString = string.Join(" ", offsetByte.Select(x => "0x" + x.ToString("x2")).ToArray());
}
}
}
}
我正在编写一个应用程序,它可以处理文件的十六进制,但不能处理所有文件,而只能处理具有指定偏移量的文件。到目前为止,我正在使用从此处获取的函数,但在我的情况下效果不佳。
public static string HexStr(byte[] p)
{
char[] c = new char[p.Length * 2 + 2];
byte b;
c[0] = '0'; c[1] = 'x';
for (int y = 0, x = 2; y < p.Length; ++y, ++x)
{
b = ((byte)(p[y] >> 4));
c[x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
b = ((byte)(p[y] & 0xF));
c[++x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
}
return new string(c);
}
byte[] byVal;
using (Stream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
BinaryReader brFile = new BinaryReader(fileStream);
fileStream.Position = key;
byte[] offsetByte = brFile.ReadBytes(0);
string offsetString = HexStr(offsetByte);
byVal = brFile.ReadBytes(16);
}
有人可以提出这个问题的任何其他解决方案吗?
P.S。此代码采用指定偏移量的十六进制文件(fileStream.Position=key
"key" 是偏移量),这是我的弱点
试试这个代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
const string path = @"C:\temp\test.txt";
static void Main(string[] args)
{
long offset = 25;
long key = offset - (offset % 16);
using (Stream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
BinaryReader brFile = new BinaryReader(fileStream);
fileStream.Position = key;
List<byte> offsetByte = brFile.ReadBytes(16).ToList();
string offsetString = string.Join(" ", offsetByte.Select(x => "0x" + x.ToString("x2")).ToArray());
}
}
}
}