BitConverter.GetBytes 就位

2023-11-27

我需要获取值UInt16 and UInt64 as Byte[]。目前我正在使用BitConverter.GetBytes,但是这个方法每次都会给我一个新的数组实例。

我想使用一种方法,允许我将这些值“复制”到已经存在的数组中,例如:

.ToBytes(UInt64 value, Byte[] array, Int32 offset);
.ToBytes(UInt16 value, Byte[] array, Int32 offset);

我一直在使用 ILSpy 查看 .NET 源代码,但我不太确定该代码是如何工作的以及如何安全地修改它以满足我的要求:

public unsafe static byte[] GetBytes(long value)
{
    byte[] array = new byte[8];
    fixed (byte* ptr = array)
    {
            *(long*)ptr = value;
    }
    return array;
}

哪种方法是实现这一目标的正确方法?

更新:我不能使用不安全的代码。它不应该创建新的数组实例。


你可以这样做:

static unsafe void ToBytes(ulong value, byte[] array, int offset)
{
    fixed (byte* ptr = &array[offset])
        *(ulong*)ptr = value;
}

Usage:

byte[] array = new byte[9];
ToBytes(0x1122334455667788, array, 1);

您只能以字节为单位设置偏移量。

如果您想要托管方式来做到这一点:

static void ToBytes(ulong value, byte[] array, int offset)
{
    byte[] valueBytes = BitConverter.GetBytes(value);
    Array.Copy(valueBytes, 0, array, offset, valueBytes.Length);
}

或者你可以自己填写值:

static void ToBytes(ulong value, byte[] array, int offset)
{
    for (int i = 0; i < 8; i++)
    {
        array[offset + i] = (byte)value;
        value >>= 8;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BitConverter.GetBytes 就位 的相关文章

随机推荐

  • Final 类中的 Powermock 静态 Final 方法

    我正在编写的测试用例 public class AClassUnderTest This test class has a method call public Long methodUnderTest Uses the FinalUtil
  • 水晶报表打印空白页

    我有一个水晶报告 它正在打印空白页并打印报告 但只是带有这个附加页 完成我的研究 勾选 取消勾选并将正确的公式添加到 新页面之后 选项中 而不是最后一个记录公式等 但它仍然打印空白页 这是我的部分专家详细信息 报告标题 勾选 自由格式 灰色
  • 如何以编程方式登录 WordPress?

    我需要以编程方式在 WordPress 管理面板中执行一些操作 但无法管理如何使用 C 和 HttpWebRequest 登录 WordPress 这是我所做的 private void button1 Click object sende
  • PHP 中的多重继承

    我正在寻找一种好的 干净的方法来解决 PHP5 仍然不支持多重继承的事实 这是类层次结构 Message 短信 邀请短信 邮件留言 邀请邮件留言 两种类型的邀请 课程有很多共同点 我希望有一个共同的父类 Invitation 他们都可以继承
  • 如何通过NodeJS调用elasticsearch api?

    我的任务是对弹性搜索 api 进行 POST api 调用 https search test search fqa4l6ubylznt7is4d5yxlmbxy us west 2 es amazonaws com klove ddb r
  • python目录路径中的空格

    我是 Python 编码新手 但我遇到了一些谷歌搜索也无法帮助我解决的问题 我正在尝试编写一个简单的目录列表工具 但我似乎无法处理 OSX 中目录名称中的空格 我的代码如下 def listdir nohidden path import
  • 与 p:dialog 相比,PrimeFaces 对话框框架会破坏视图范围吗?

    我正在使用 PrimeFaces 5 我想在按下按钮时打开一个对话框
  • 通过 exec 将变量传递给 PhantomJS

    我正在开始使用 Grunt 并希望将变量传递给我通过 exec 运行的 PhantomJS 脚本 我想要做的是传递一个 url 供脚本从中获取屏幕截图 任何帮助将不胜感激 谢谢 Darren Grunt 脚本 exec phantomjs
  • 如何在可变参数模板函数中使用source_location?

    C 20 功能std source location用于捕获有关调用函数的上下文的信息 当我尝试将它与可变参数模板函数一起使用时 我遇到了一个问题 我看不到放置source location范围 以下不起作用 因为可变参数必须位于末尾 do
  • 如何使用 Selenium WebDriver 在 Chrome 中激活 AdBlocker?

    我想使用 Selenium WebDriver Java 激活 Chrome 浏览器的 Adblocker 如何做呢 您可以使用扩展的 crx 文件 也可以指向它安装的目录 假设您已经安装了它 您需要添加ChromeOptions给你的ne
  • Jquery - 使用 POST 请求,这是不允许的错误

    我正在尝试让 jquery 与网络服务进行通信 function Test item ajax type POST url WebService asmx Test data Item item contentType applicatio
  • 将字符数组视为比特流的 C/C++ 代码

    我在 char 数组中有一大堆二进制数据 我需要将其解释为打包的 6 位值的数组 I could坐下来编写一些代码来执行此操作 但我认为必须有人已经编写了一个很好的现有类或函数 我需要的是这样的 int get bits char data
  • 如何在 asp.net mvc 3 中使用 jquery 和 dataannotation 验证输入文件

    我确信我在这里遗漏了一些东西 我发现this验证文件的问题 这里是示例代码 public class UpdateSomethingViewModel DisplayName evidence Required ErrorMessage Y
  • MySQL 错误 1215:无法添加外键约束

    我正在尝试将我的新架构正向工程到我的数据库服务器上 但我无法弄清楚为什么会出现此错误 我试图在这里搜索答案 但我发现的所有内容都说要么将数据库引擎设置为 InnoDB 要么确保我尝试用作外键的键是它们自己的表中的主键 如果我没记错的话 这两
  • 如何在javascriptalert()中增加字体大小

    我可以控制javascript中字符串的字体大小吗alert call 我有下面的图片 我想增加字体大小以使其清晰易读 Javascript 警报弹出窗口 我可以在 javascriptalert 调用中控制字符串的字体大小吗 没有 警报窗
  • ADB - Android - 获取当前活动的名称

    有没有办法通过 adb 获取当前正在运行的活动的详细信息 我更喜欢解析结果dumpsys window windows over dumpsys activity adb shell dumpsys window windows grep
  • Spring Boot 的 Hibernate 字段命名问题(命名策略)

    请注意 此代码确实适用于普通 Spring 但不适用于 Spring Boot v1 3 3 我是否缺少某些内容 因为这是从有效的 Spring 应用程序导入的 下面的代码来自spring boot应用程序 Entity Table nam
  • 如何使用相同的输入创建两个不同的补充列表

    在我之前的问题中 如何在带有列表的地图中分组时过滤年龄我能够使用以下方法找到年龄组的名称List
  • 从文本文件自动附加/完成到编辑框delphi

    我正在尝试创建一个编辑框 并且希望它能够自动附加键入时输入的文本 文本将附加来自文本文件的 建议 假设我的建议文件中有这些 玛丽莲 梦露 马龙 白兰度 迈克 迈尔斯 当我开始在编辑框中输入 M 时 其余部分将突出显示 或不突出显示 艾琳 梦
  • BitConverter.GetBytes 就位

    我需要获取值UInt16 and UInt64 as Byte 目前我正在使用BitConverter GetBytes 但是这个方法每次都会给我一个新的数组实例 我想使用一种方法 允许我将这些值 复制 到已经存在的数组中 例如 ToByt