从 byte[] 转换为字符串

2023-12-12

我有以下代码:

using (BinaryReader br = new BinaryReader(
       File.Open(FILE_PATH, FileMode.Open, FileAccess.ReadWrite)))
{
    int pos = 0;
    int length = (int) br.BaseStream.Length;

    while (pos < length)
    {
        b[pos] = br.ReadByte();
        pos++;
    }

    pos = 0;
    while (pos < length)
    {
        Console.WriteLine(Convert.ToString(b[pos]));
        pos++;
    }
}

FILE_PATH 是一个常量字符串,包含正在读取的二进制文件的路径。 二进制文件是整数和字符的混合。 每个整数为 1 个字节,每个字符以 2 个字节写入文件。

例如,该文件具有以下数据:

1你好,你好吗45你看起来棒极了//等等

请注意:每个整数都与其后面的字符串相关联。因此 1 与“HELLO HOW ARE YOU”相关,45 与“YOU ARE LOOKING GREAT”相关,依此类推。

现在二进制文件已写入(我不知道为什么,但我必须忍受这一点),使得“1”仅占用 1 个字节,而“H”(和其他字符)各占用 2 个字节。

所以这是该文件实际包含的内容:

0100480045..等等 详细情况如下:

01 是整数 1 的第一个字节 0048 是 'H' 的 2 个字节(H 是十六进制的 48) 0045 是 'E' 的 2 个字节 (E = 0x45)

等等.. 我希望我的控制台从此文件中打印人类可读的格式:我希望它打印“1 HELLO HOW ARE YOU”,然后“45 YOU ARE LOOKING GREAT”等等......

我正在做的事情正确吗?有更简单/有效的方法吗? 我的行 Console.WriteLine(Convert.ToString(b[pos]));只是打印整数值而不是我想要的实际字符。文件中的整数是可以的,但是如何读出字符呢?

任何帮助将非常感激。 谢谢


我想你正在寻找的是编码.GetString.

由于您的字符串数据由 2 个字节字符组成,因此如何获取字符串是:

for (int i = 0; i < b.Length; i++)
{
  byte curByte = b[i];

  // Assuming that the first byte of a 2-byte character sequence will be 0
  if (curByte != 0)
  { 
    // This is a 1 byte number
    Console.WriteLine(Convert.ToString(curByte));
  }
  else
  { 
    // This is a 2 byte character. Print it out.
    Console.WriteLine(Encoding.Unicode.GetString(b, i, 2));

    // We consumed the next character as well, no need to deal with it
    //  in the next round of the loop.
    i++;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 byte[] 转换为字符串 的相关文章

  • WinForms:如何确定窗口是否不再活动(没有子窗口具有焦点)?

    我的应用程序使用多个窗口 我想隐藏一个特定窗口 以防应用程序失去焦点 当活动窗口不是应用程序窗口时 source https stackoverflow com questions 466354 how can i tell if a wi
  • 具有子列表属性映射问题的自动映射器

    我有以下型号 Models public class Dish Required public Int64 ID get set Required public string Name get set Required public str
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder

随机推荐

  • 在 matplotlib 中绘制大量点和边

    我有一些这种格式的点 大约 3000 和边 大约 6000 points numpy array 1 2 4 5 2 7 3 9 9 2 edges numpy array 0 1 3 4 3 2 2 4 其中边是点的索引 因此每条边的开始
  • 自定义 Bash 提示符正在覆盖自身

    我正在使用自定义 bash 提示符来显示 git 分支 一切都在 etc bash bashrc function formattedGitBranch branch git branch 2 gt dev null sed e s d e
  • 选择每年的最佳记录

    我正在尝试回顾我的 sql 技能 现在我正在尝试在 Northwinddb 上运行一个简单的查询来向我显示每年的顶级客户 但是一旦我使用 TOP 函数 无论我在什么情况下 都只会显示 1 条记录分区依据 这是我的 T SQL 代码 SELE
  • ARM 中的 WFE 指令处理

    WFE 指令如何运作 我读到的是 它使处理器等待 IRQ FIQ event 但是 当您获得 IRQ 时会发生什么 irq fault handler 向量是否在获得中断或执行 WFE 之后的指令时执行 WFE 在概念上等同于 while
  • Firefox 滚动顶部问题

    我对 Firefox 的scrollTop 值和onscroll 事件有疑问 这在 IE Safari 和 Chrome 中效果很好 但 Firefox 似乎滞后 我尝试使用onscroll事件更新一些背景位置 但是当我拿起手柄并快速上下拖
  • ubuntu 16 上的 bash:set -e 不在子 shell 内继承

    当我运行这个命令时 set e echo echo I get himBH作为输出 我期待着这封信e包含在输出中 这是怎么回事 我使用的是 Ubuntu 16 04 1 LTS GNU bash 版本 4 3 46 1 release x8
  • 如何从 AngularJS 指令中选择动态生成的元素?

    在我的指令中 我需要选择某些 DOM 元素 其中一些元素是在 ng repeat 循环中动态生成的 如果我以直接的方式执行此操作 我将只获得静态元素 但是 如果我将选择延迟 500 毫秒 我将获得所有元素 这就是我想要的 虽然这可行 但它不
  • destroy_user_session_path 在 Rails 中触发 GET 而不是 DELETE

    我认为有以下代码 li li 它会生成以下 HTML a href users sign out Sign out a 但是 当单击该链接时 我收到以下错误 No route matches GET users sign out 我在这里做
  • 如何修复 Flask 蓝图的端点错误

    我正在用蓝图学习 Flask 我有以下代码示例 from flask import Flask render template Blueprint g bp Blueprint language name url prefix
  • 自定义 ListView 适配器。 TextChangedListener 调用错误的 EditText

    我有带有自定义适配器的旅行者列表 其中包含两个 EditText edtFirstName 和 edtLastName 我希望当用户输入文本时将更改保存到列表中 并且当单击下一个按钮时将此列表发送到另一个活动 My code public
  • 加密字符串从 Delphi 到 C#

    我正在尝试解密在 Delphi 中使用 Cipher1 3 0 加密的 C 中的一个字符串 来自 Delphi 加密纲要的第一部分 我使用 TCipher Rijndael 我加密的字符串是 this is a test example 密
  • 将字符串中除第一个和最后一个字符之外的所有字符替换为星号[重复]

    这个问题在这里已经有答案了 如何在PHP中将字符串中除了第一个和最后一个字符之外的所有字符替换为星号 例如test应该成为t t and profanity become p y等等 function get starred str len
  • 如何在没有 oledb 的情况下将 Excel 文件数据上传到 SQL Server

    我一直在尝试使用 ASP NET Core MVC 将数据从 Excel 文件导入到 SQL Server 中 但这段代码无法运行 HttpPost public IActionResult Index ICollection
  • NHibernate QueryOver 投影 - 将集合投影到 DTO

    我正在尝试将实体集合投影到 DTO 中 使用简单的属性就足够简单了 但是集合有问题 public class Blog public string Name get set public IList
  • JQuery mobile - 内容导航在纵向按钮上折叠

    我们正在开发一个布局接近 jqm 示例的应用程序here 左侧的目录和右侧的内容 但我们想要与 Sencha mobile 相同的行为 当它处于纵向时 目录会在导航按钮中折叠here 可以用jqm来做吗 我创建了一个示例 jQuery Mo
  • 需要 SIMPLESAMLPHP 后 SESSION 变量不起作用

    我的会话变量有问题 在我需要一次之后我无法设置任何变量 但我需要在登录后存储我的数据 这是代码 EDIT session start 位于 header php 中 我尝试在另一个页面上获取会话变量echo SESSION niva
  • Android getUriForFile IllegalArgumentException

    我用 Intent 发送文件的代码不适用于所有文件源 而且我还找不到解决方案 我的应用程序已注册用于打开文件 因此当我在 ES 文件资源管理器中选择文件时 意图如下所示 intent gt mData gt uriString storag
  • 对 <****.ViewController: 0x7fa425f07120> 的开始/结束外观转换的不平衡调用

    我看过很多与此错误相关的其他 stackoverflow 帖子 但在我的情况下我无法理解它 因此不知道如何解决 stackoverflow 帖子中的大多数回复 例如this例如 其中一个 涉及多个视图控制器 以及如何在前一个视图控制器完成之
  • 如何向WebRequest添加cookie?

    我正在尝试对一些代码进行单元测试 我需要替换它 HttpWebRequest httpWebRequest HttpWebRequest WebRequest Create uri httpWebRequest CookieContaine
  • 从 byte[] 转换为字符串

    我有以下代码 using BinaryReader br new BinaryReader File Open FILE PATH FileMode Open FileAccess ReadWrite int pos 0 int lengt