如何在 C# 中将固定字节/char[100] 转换为托管 char[]?

2023-12-25

在 C# 中将固定字节或 char[100] 转换为托管 char[] 的最佳方法是什么?我最终不得不使用指针算术,我想知道是否有更简单的方法——比如 memcpy 或其他方法?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace StructTest
{

    [StructLayout(LayoutKind.Explicit)]
    unsafe struct OuterType
    {
        private const int BUFFER_SIZE = 100;

        [FieldOffset(0)]
        private int transactionType;

        [FieldOffset(0)]
        private fixed byte writeBuffer[BUFFER_SIZE];

        public int TransactionType
        {
            get { return transactionType; }
            set { transactionType = value; }
        }

        public char[] WriteBuffer
        {
            set
            {
                char[] newBuffer = value;

                fixed (byte* b = writeBuffer)
                {
                    byte* bptr = b;
                    for (int i = 0; i < newBuffer.Length; i++)
                    {
                         *bptr++ = (byte) newBuffer[i];
                    }
                }
            }

            get
            {
                char[] newBuffer = new char[BUFFER_SIZE];

                fixed (byte* b = writeBuffer)
                {
                    byte* bptr = b;
                    for (int i = 0; i < newBuffer.Length; i++)
                    {
                        newBuffer[i] = (char) *bptr++;
                    }
                }

                return newBuffer;
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            OuterType t = new OuterType();
            t.WriteBuffer = "hello there".ToCharArray();
            System.Console.WriteLine(t.WriteBuffer);
        }
    }
}

您可以使用元帅.副本 http://msdn.microsoft.com/en-us/library/ms146626.aspx为了那个原因。请注意,它还重载了 byte[],这可能是更合适的数据类型。

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

如何在 C# 中将固定字节/char[100] 转换为托管 char[]? 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 如何使用adb命令打开和关闭屏幕? [复制]

    这个问题在这里已经有答案了 我正在使用 KEYCODE POWER 来打开和关闭已 root 的手机 以下命令用于打开和关闭屏幕两种情况 adb shell input keyevent KEYCODE POWER 但是 我想在不同的情况下
  • 当默认电子邮件被覆盖时,Djoser 不发送电子邮件

    我有一个使用 Djoser 进行身份验证的 DRF 项目 该计划是覆盖 Djoser 的默认激活电子邮件并发送 HTML 模板电子邮件 这是我所拥有的 settings py DJOSER SEND ACTIVATION EMAIL Tru
  • Jquery无法从每个函数中获取值

    我正在使用其中带有输入字段的表格 我试图从具有相同类的输入字段集中获取值 并与具有不同类名的每个相邻输入进行比较 我可以看到输入中的值 但 jquery 返回的值是空的 subtotal each function var price th
  • .NET 抽象类

    我正在设计一个网站导航层次结构 它是一棵节点树 大多数节点是页面 有些节点是链接 想想 Windows 中的快捷方式 大多数页面都包含 HTML 内容 一些执行代码 我想将它们表示为类和抽象 MustInherit 类的集合 这是我将存储所
  • JavaScript 中的业务逻辑。胖客户端与瘦客户端

    用 JavaScript 在客户端实现业务逻辑是个好主意吗 应该有什么样的逻辑 验证逻辑 与 GUI 有关吗 如果相同的逻辑想要在另一个应用程序 公开的 中使用 并用 JavaScript 实现它 那么您会做什么 这意味着您无法重用该逻辑
  • Google 日历推送通知:未经授权的 webhook 调用

    目前我们正在开发一款处理谷歌日历的 iPhone 应用程序 需要将日历事件同步到服务器端 一切正常 但对于推送通知 我们正在关注这个流程 https developers google com google apps calendar v3
  • 在Python中,什么时候应该使用函数而不是方法?

    Python 的禅宗指出 做事情应该只有一种方法 但我经常遇到决定何时使用函数和何时使用方法的问题 让我们举一个简单的例子 ChessBoard 对象 假设我们需要某种方法来获得棋盘上所有合法的国王走法 我们写 ChessBoard get
  • 通过控制台使用文件流写入字节输出进度时出现内存不足异常

    我有以下代码 在写入大文件时抛出内存不足异常 我有什么遗漏的吗 我不确定为什么它会抛出内存不足错误 因为我认为文件流最多只能使用 4096 字节作为缓冲区 老实说 我不完全确定缓冲区意味着什么 任何建议将不胜感激 public static
  • Erlang 是集群计算世界的 C 语言吗?

    Erlang 似乎在网络上的级别和性能都很低 但没有非常丰富的类型系统或其他函数式语言提供的许多东西 所以在我看来它将成为集群编程的最低级别开发语言 直到出现其他东西并提 供像样的集群虚拟机和高级构造 对此有什么想法吗 C是集群计算的C 至
  • Flex/Actionscript 白色至透明

    我正在尝试使用动作脚本在我的 Flex 3 应用程序中编写一些内容 它将拍摄图像 当用户单击按钮时 它将去除所有白色 ish 像素并将它们转换为透明 我说白色 ish 是因为我尝试过纯白色 但边缘有很多伪影 使用以下代码我已经有点接近了 t
  • 如何将 HTML 页面滚动到给定的锚点

    我想让浏览器将页面滚动到给定的锚点 只需使用 JavaScript 我已经指定了一个name or id我的 HTML 代码中的属性 a a or h1 h1 我希望获得与您导航到相同的效果http server com path anch
  • Linux 内核崩溃消息中的“代码”是什么?

    Linux 内核加载失败后 我有以下堆栈跟踪和崩溃信息 3 684670 cut here 3 695507 Bad FPU state detected at fpu clear 0x91 0xc2 reinitializing FPU
  • PhpExcel中获取单元格背景颜色

    我在我的项目中使用Excel5 我已经尝试过以下代码 objPHPExcel gt getActiveSheet gt getStyle A1 gt getFill gt getStartColor gt getARGB and objPH
  • 删除 PHP 多维数组中的父级

    删除多维数组中匹配键的父级的最佳方法是什么 例如 假设我们有以下数组 我想找到 text a 然后删除其父数组 0 array Array 0 gt Array text gt a height gt 30 1 gt Array text
  • 禁用识别监听器的“就绪”声音

    我实现了一个识别监听器 http developer android com reference android speech RecognitionListener html在选项卡式片段活动内部 发生的情况是 当用户滚动时 实现侦听器的
  • Delphi:取消选择树视图中的选定项目

    有一个树视图 MultiSelect true 如果选择所有项目 则无法取消选择或再次选择 但其他项目除外 我想我需要做TreeView1 Selected Selected false on TForm1 TreeView1Click 但
  • sqlalchemy 没有指定驱动程序,但是指定了驱动程序

    根据这个link http docs sqlalchemy org en latest dialects mssql html module sqlalchemy dialects mssql pyodbc sqlalchemy 现在需要指
  • Django模板:如何显示其键中有一个点的字典? d['键名']

    我有一本这样的字典 dict name keyname with manydots 问题 我不能做 dict name keyname with manydots 我知道用 Django 模板不可能做到这一点 但是你发现的最好的解决方法是什
  • 如何从 Heroku 错误获取 Rails Heroku 日志回溯

    我在 Heroku Bamboo 堆栈上使用 Rails 3 2 3 我昨晚从日志中收到此错误 但无法准确诊断其发生的位置和原因 如何从 Heroku 日志中获取错误的完整回溯 app web 2 Unexpected error whil
  • 如何在 C# 中将固定字节/char[100] 转换为托管 char[]?

    在 C 中将固定字节或 char 100 转换为托管 char 的最佳方法是什么 我最终不得不使用指针算术 我想知道是否有更简单的方法 比如 memcpy 或其他方法 using System using System Collection