当前位置: 首页 > news >正文

C# 命令行指令 查看二进制文件

1.代码

using System; using System.IO; using System.Linq; class HexDump { static void Main(string[] args) { // 解析命令行参数 if (args.Length == 0 || args[0] == "/?" || args[0] == "-h" || args[0] == "--help") { ShowHelp(); return; } string filePath = args[0]; long offset = 0; // 处理偏移量参数(-o 或 --offset) for (int i = 1; i < args.Length; i++) { if (args[i] == "-o" || args[i] == "--offset") { if (i + 1 < args.Length && long.TryParse(args[i + 1], System.Globalization.NumberStyles.HexNumber, null, out offset)) { i++; } else if (i + 1 < args.Length && long.TryParse(args[i + 1], out offset)) { i++; } else { Console.WriteLine("错误:无效的偏移量。"); ShowHelp(); return; } } } // 检查文件是否存在 if (!File.Exists(filePath)) { Console.WriteLine($"错误:文件 '{filePath}' 不存在。"); return; } try { using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) using (BinaryReader reader = new BinaryReader(fs)) { long fileSize = fs.Length; // 验证偏移量 if (offset < 0) offset = 0; if (offset > fileSize) offset = fileSize; // 定位到偏移量 fs.Seek(offset, SeekOrigin.Begin); int bytesPerLine = 16; int linesPerPage = 20; long currentOffset = offset; bool continueReading = true; while (continueReading && currentOffset < fileSize) { int linesDisplayed = 0; // 显示一页内容(20行) while (linesDisplayed < linesPerPage && currentOffset < fileSize) { byte[] buffer = new byte[bytesPerLine]; int bytesRead = reader.Read(buffer, 0, bytesPerLine); if (bytesRead == 0) break; // 显示偏移量 Console.Write($"{currentOffset:X8} "); // 显示十六进制字节 for (int i = 0; i < bytesPerLine; i++) { if (i < bytesRead) Console.Write($"{buffer[i]:X2} "); else Console.Write(" "); if (i == 7) Console.Write(" "); } // 显示ASCII表示 Console.Write(" |"); for (int i = 0; i < bytesRead; i++) { char c = (char)buffer[i]; Console.Write(char.IsControl(c) ? '.' : c); } Console.WriteLine("|"); currentOffset += bytesRead; linesDisplayed++; } // 判断是否还有更多内容 if (currentOffset < fileSize) { Console.WriteLine($"\n-- 显示第 {currentOffset / bytesPerLine - (currentOffset % bytesPerLine == 0 ? linesPerPage : currentOffset % bytesPerLine / bytesPerLine)} 页,按 Enter 键继续,按 Q 键退出 --"); var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Q) { continueReading = false; } Console.WriteLine(); // 换行准备下一页 } else { Console.WriteLine("\n文件已显示完毕。"); continueReading = false; } } } } catch (Exception ex) { Console.WriteLine($"错误:{ex.Message}"); } } static void ShowHelp() { Console.WriteLine("HexDump - 二进制文件十六进制查看器"); Console.WriteLine("用法:"); Console.WriteLine(" HexDump <文件路径> [-o <偏移量>]"); Console.WriteLine(""); Console.WriteLine("参数:"); Console.WriteLine(" <文件路径> 要查看的二进制文件路径"); Console.WriteLine(" -o, --offset 起始偏移量(支持十进制或十六进制,十六进制请加0x前缀)"); Console.WriteLine(" /?, -h, --help 显示帮助信息"); Console.WriteLine(""); Console.WriteLine("示例:"); Console.WriteLine(" HexDump test.bin"); Console.WriteLine(" HexDump test.bin -o 256"); Console.WriteLine(" HexDump test.bin -o 0x100"); Console.WriteLine(""); Console.WriteLine("操作说明:"); Console.WriteLine(" Enter 键 - 继续显示下一页"); Console.WriteLine(" Q 键 - 退出程序"); } }

2.运行测试

保存图片
编辑图片
移除物体
提取文字
图片翻译
http://www.zskr.cn/news/1446154.html

相关文章:

  • 临沂市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 别再傻傻新建工程了!STM32CubeIDE里复制粘贴旧工程,5分钟搞定新项目搭建
  • 代码 Review 吵翻天?用 GitHub Copilot 自动审查前端代码并死守工程规范的终极实践
  • 记录AI学习之路Day03 OpenClaw安装笔记
  • 告别连接失败:一招永久解决Navicat与MySQL 8.3的认证插件冲突(附Docker环境配置)
  • 【星海出品】大模型微调-Part-One
  • 强场QED与量子模拟:光子极化翻转的理论与实现
  • 2026最新鹤壁市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 从‘特征图’到‘预测概率’:在CNN图像分类任务中,全连接层和Softmax层是如何协同工作的?
  • 2026最新广安市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 作为项目经理,如何把控需求,需求超范围如何处理?
  • 六盘水市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 物理模拟进入“零误差逼近”时代?Sora 2首次达成FEM级应力分布还原(附3D可视化对比图谱)
  • 石家庄黄金回收深度图鉴,从鉴定到交易全程讲解 - 奢侈品回收测评
  • 从细胞分割到自动驾驶:UNet这个‘医学冠军’模型,如何跨界成了CV领域的‘万金油’?
  • 2026最新成都市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 10分钟精通:AMD锐龙SMU调试工具完整指南与实战应用
  • 巴中市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 2026最新承德市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 2026最新赤峰市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 实战!使用大语言模型检测 Solidity 智能合约中逻辑重入漏洞的有效性
  • 系统架构设计师-五大经典软件架构风格详解与软考真题应用指南
  • 录播姬:如何用开源工具完美解决直播录制难题
  • Agent 一接级联调用就开始全链路雪崩:从 Timeout Budget 到 Circuit Breaker 的工程实战
  • 白银市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • Node.js 版本管理管理器的使用注意 - NVM
  • 实战避坑:在Verilog/SystemVerilog中实现无死锁NoC路由器的几个关键检查点
  • LangGraph 可视化调试工具:3个插件帮你快速定位节点执行异常
  • 别再傻等!用timeout命令给你的Linux脚本加个‘闹钟’,5分钟自动结束
  • 从调和分割到极点极线:用GeoGebra动态演示理解二次曲线的奇妙几何