我如何将这段 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 是否更合适。
请注意,您还可以使用unsafe
C# 代码来获得与 C 代码(via fixed
)基本相同的代码,并且在接下来的部分中:这将非常适合Span<T>
允许不同T
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句