将 C 代码移植到 C#/取消引用指针

公墓

我如何将这段 C 代码移植到 C#?它是一个 UPC 密钥恢复工具。

hv是一个uint32_t有 4 个元素数组。h1是一个uint8_t有 16 个元素数组

uint32_t hv[4] = ...
uint8_t h1[16] = ...

for (i = 0; i < 4; i++) {
    hv[i] = *(uint16_t *)(h1 + i*2);
}

虽然这是有效的 C 代码,但我似乎无法将其移植到 C# 而不会给我错误。有人知道我能做什么吗?

我试过声明hv为 uint 数组和h1字节数组。

马克·格拉维尔

本质上:

        ushort[] hv = new ushort[4];
        byte[] h1 = new byte[16];

        for (int i = 0; i < 4; i++)
        {
            // note: this call is CPU-endian; if your data is not CPU-endian,
            // you will need to write a known-endian op - aka "shift" and "or"
            hv[i] = BitConverter.ToUInt16(h1, i * 2);
        }

虽然我想知道 blit 是否更合适。

请注意,您还可以使用unsafeC# 代码来获得与 C 代码(via fixed基本相同的代码,并且在接下来的部分中:这将非常适合Span<T>允许不同T.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章