c# - Unsafe.InitBlockUnaligned 的奇怪行为
问题描述
所以我试图用 填充一块内存Unsafe.InitBlockUnaligned
,不幸的是它没有按预期工作。它不是用我指定的值填充我的内存块,而是使用完全不同的值。有人可以帮忙吗?
using System;
using System.Runtime.CompilerServices;
namespace Demo
{
public class Class1
{
internal static unsafe void MemSet(void* dest, byte value, int byteCount)
{
Unsafe.InitBlockUnaligned(dest, value, (uint) byteCount);
}
public static unsafe void Main()
{
uint[] kim = new uint[10];
kim[0] = 213;
kim[1] = 213;
kim[2] = 213;
byte val = 50;
MemSet((byte*) (uint*) Unsafe.AsPointer(ref kim[0]), val, 3 * Unsafe.SizeOf<uint>());
Console.WriteLine(String.Join(", ", kim));
}
}
}
解决方案
前 3 个值变为842150450
,0x32323232
以十六进制表示。
50
是0x32
十六进制的。
推荐阅读
- node.js - 在 Digitalocean NodeJS 液滴上使用 NPM 失败
- woocommerce-subscriptions - 如何在我的帐户中添加个人资料图片(文件上传)> 在没有插件的 WooCommerce 中编辑帐户
- javascript - 我试图改变 div 背景颜色,但没有。创建更改元素背景颜色的新功能
- graph-theory - 可以用属性而不是整数标记顶点吗?
- python - Flask Jinja2 不渲染引导轮播
- reactjs - React Router Dom v4 Home Activeclass上的多个嵌套路由
- typescript - 缩小联合的条件类型
- python - 为单词中的字母分配数值
- c++ - 为什么 decltype(captured_var) 的行为不符合预期?
- python - 激活 bot.polling,同时激活命令处理程序。Telebot,蟒蛇 3