在 C# 中将字符串存储为 UTF8

2024-03-13

我在 C# 中进行了大量的字符串操作,并且确实需要将字符串每个字符存储一个字节。这是因为我需要在内存中同时存储千兆字节的文本,这会导致内存不足的问题。我确信该文本永远不会包含非 ASCII 字符,因此就我的目的而言,System.String 和 System.Char 将所有内容存储为每个字符两个字节的事实既不必要又是一个真正的问题。

我即将开始编写我自己的 CharAscii 和 StringAscii 类 - 字符串类基本上将其数据保存为 byte[],并公开与 System.String 类似的字符串操作方法。然而,要做一些看起来非常标准的问题似乎需要做很多工作,所以我在这里发帖是为了检查是否还没有更简单的解决方案。例如,是否有某种方法可以使 System.String 在内部将数据存储为我没有注意到的 UTF8,或者以其他方式解决该问题?


那么,您可以创建一个包装器,以 UTF-8 字节的形式检索数据,并根据需要将片段转换为 System.String,然后反之亦然,将字符串推回内存。 Encoding 类将在这里帮助您:

var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);

var myReturnedString = utf8.GetString(utfBytes);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中将字符串存储为 UTF8 的相关文章

随机推荐

  • 如何更改 TYPO3 中的页眉布局(添加一些换行 div)

    您好 我需要更改 TYPO3 中的标题布局 下图 我正在使用流体模板系统 我还找到了可以更改它的 html 文件 该文件的原始路径是 typo3 src 7 6 16 typo3 sysext fluid styled content 资源
  • Laravel 5.5 尝试使用 PHP 的 mail() 发送邮件时出错:预期响应代码 250,但得到代码“550”

    我已将站点升级到 Laravel 5 5 突然我无法再发送邮件 因为它给了我以下错误 Production ERROR 预期响应代码 250 但得到代码 550 其中 消息 550 未经过身份验证 请启用 SMTP 身份验证 电子邮件软件和
  • 使用 GCS 客户端库模拟云存储的 GAE java 上的文件 uri 是什么?

    我正在使用 Java 的 Google 应用程序引擎开发一个 Web 应用程序 我将使用 Google Cloud 存储并根据文档 https developers google com appengine docs java google
  • c getline 跳过空行

    while getline line line size f 1 I m using this function to read line line But i want to know when i m reading a blank l
  • c char 指针问题

    如果我们声明char p hello 那么由于它被写入数据部分 我们无法修改p指向的内容 但我们可以修改指针本身 但我在 C Traps and Pitfalls 中找到了这个例子 安德鲁 科尼格 AT T贝尔实验室 默里山 新泽西州 07
  • 获取 Instagram 上用户的性别

    我只是想知道是否有办法在 Instagram 上获取用户的性别 我浏览了 Instagram 的 api 从 users userId 获取的用户信息不包含性别信息 感谢您的帮助 NO 目前还没有办法从API获取instagram用户的性别
  • UTF-8 文本(印地语)未显示在浏览器窗口或 Eclipse 控制台上

    我必须在浏览器屏幕上显示印地语 或任何区域语言 的文本 我将从数据库中获取此文本 为此 我从以下几个方面开始 String escapedStr u0905 u092d u0940 u0938 u092e u092f u0939 u0948
  • 在Python中找到分数列表的最小公分母

    我有一个分数列表 from fractions import Fraction fractions list Fraction 3 14 Fraction 1 7 Fraction 9 14 输出应该是一个列表 其中包含每个分数的分子 最后
  • React - 将所有数据从 json 加载到组件中

    我正在使用 React 并尝试将数据从本地 json 文件加载到我的组件中 我试图打印所有信息 包括名称 值对中的 名称 不仅仅是值 使其看起来像一个表单 我正在寻找最好的方法来做到这一点 我需要解析吗 我需要使用地图功能吗 我是 Reac
  • 在 PHP 中获取数组的最后一个元素而不更改数组? [复制]

    这个问题在这里已经有答案了 array pop 将其从数组中删除 end 改变内部指针 唯一的方法真的像这样 my array array pop array keys my array 这有效 list end array slice a
  • 如何检查 window.external 上是否存在函数

    如何检查 window external 上是否存在函数 我正在从 javascript 调用 C 代码 并且想检查 C 对象中是否存在方法 我找到了路 只需使用 in 运算符 如下所示 if FunctionName in window
  • 元组的串联

    普通文本 我在 python 3 2 1 上编码时遇到一些问题 实际上我正在参加有关 python 2 5 的在线讲座 这是代码 x 100 divisors for i in range 1 x if x i 0 divisors div
  • 在 bash shell 中打印星号(“*”)

    a 5 echo aMin bash etc init d ckDskCheck sh 当我尝试运行以下代码时 它会正确显示 5 bash etc init d ckDskCheck sh 但是 当我尝试使用以下代码将结果分配给变量并将其打
  • 快速使用未解析的标识符“UIApplicationStateInactive”

    在我处理推送通知的 Swift 代码中 我有这一行 if application applicationState UIApplicationStateInactive application applicationState UIAppl
  • 如何在sqlite android中插入多行

    我有一种方法可以将值插入到sqlite在一个班级里 在主要活动中 我正在解析 json 值并尝试将这些值插入到sqlite在循环中 因为我必须插入不止一行 但只有一行被添加到数据库中 添加多行的方法如下 public void addSes
  • 如何访问SetDefaultContentHeaders中的底层对象?

    我有一个 Web api 我在其中返回一个对象 当我使用接受标头 image jpg 时 我想要该对象的图像表示形式 但我想根据我返回的对象设置文件名 我已经实施了一个BufferedMediaTypeFormatter并认为我应该在方法中
  • 如何在 Windows 中使用本地路径访问 Subversion 存储库?

    我安装了 CollabNet Subversion 服务器和客户端 运行附带的 Apache 从服务器上的命令行 我可以使用类似的路径轻松访问存储库 http server port svn repository 但我无法使用它在磁盘上的实
  • 类似 git 界面的最佳方法

    我正在编写一个小型命令行待办事项应用程序 它具有类似于 git 的通用界面 它可以执行多项任务 add list complete 所有这些都应该可以通过todo
  • docker容器主机名顺序号

    在 docker swarm 中存在副本 规模的情况下 是否有任何选项可以让主机名 容器名具有一些序列号 version 3 services serA image someimage1 hostname serA serB image s
  • 在 C# 中将字符串存储为 UTF8

    我在 C 中进行了大量的字符串操作 并且确实需要将字符串每个字符存储一个字节 这是因为我需要在内存中同时存储千兆字节的文本 这会导致内存不足的问题 我确信该文本永远不会包含非 ASCII 字符 因此就我的目的而言 System String