使用VB.NET将签名字节写入非托管内存

时间:2012-03-22 15:44:53

标签: vb.net

如何使用VB.NET将签名字节(sbyte)写入非托管内存?

我可以使用Marshal.WriteByte()来写一个无符号字节,但对于有符号字节来说似乎并不重载。

1 个答案:

答案 0 :(得分:0)

要将负的有符号字节转换为无符号字节,请将绝对值与255进行异或,并加1。

这是致电two's complement

从-34开始, Abs(-34) - > 34, Xor 255 - > 221, + 1 - > 222

所以222具有与-34相同的二进制表示。

在框架中可能有更好的方法可以做到这一点,但上述方法应该有效。尝试一下,让我们都知道。

(并且可能不言而喻,但正的有符号字节具有与其无符号conterpart相同的二进制表示。因此,值为45的SByte具有与值为45的字节相同的表示。)

相关问题