请教一个数值计算的问题 现有一个byte数组,含两个字节(共16位),表示的是一个有符号的整数怎样计算才能得到这个有符号的整数呢?请指教,急 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int Ret = BitConverter.ToUInt32(bytes,0); 给你一个我用过的代码吧。 public static unsafe Int16 HexToShort(byte[] byteValue) { Int16[] nValuePtr = new Int16[1]; int sizeOfValue = Marshal.SizeOf(typeof(Int16));// sizeOfValue = 1; fixed (Int16* pTempValue = nValuePtr) { Marshal.Copy(byteValue, 0, new IntPtr(pTempValue), sizeOfValue); } return nValuePtr[0]; } 呵呵,上面的代码也是可以的。最简单是使用byte[] ba = new byte[]{15,16};Int16 i16 = BitConverter.ToInt16(ba,0); System.BitConverter.ToInt16试试 byte[] ba = new byte[]{15,16};Int16 i16 = BitConverter.ToInt16(ba,0); Int16就是有符号的。UInt16才是无符号的。 谢谢phy了,但还想问一下:比如 byte[] bts = new byte[2] {0x80,0x00}那么对应的二进制应该是 1000 0000 0000 0000 也就是-32768,为什么用BitConverter.ToInt16(bts,0)得到的是1呢?而换成{0x00,0x80},即 0000 0000 1000 0000得到的却是-32768谢谢 int Ret = BitConverter.ToInt16(bytes,0); 用C#编写校验工具(写出代码给一百分,准给) threads control线程退出问题 winform焦点问题 请高手过来see一下 C#填充别人网页内容的实现 c# mapx 图层上建点和线无法显示 新手,请教DataGrid问题,请指点一下 帮帮我这个新手吧~ 一运行一个自己写的窗体,就会自动弹出开始菜单,这是怎么回事? 关于图片上传自动转换的问题 bool l=Convert.ToBoolean("1"); 有异常!能否 转换??? c#中不能调用含有文件操作的dll吗? 二次开发
{
Int16[] nValuePtr = new Int16[1];
int sizeOfValue = Marshal.SizeOf(typeof(Int16));// sizeOfValue = 1;
fixed (Int16* pTempValue = nValuePtr)
{
Marshal.Copy(byteValue, 0, new IntPtr(pTempValue), sizeOfValue);
} return nValuePtr[0];
}
byte[] ba = new byte[]{15,16};
Int16 i16 = BitConverter.ToInt16(ba,0);
Int16 i16 = BitConverter.ToInt16(ba,0);
UInt16才是无符号的。
那么对应的二进制应该是 1000 0000 0000 0000 也就是-32768,为什么用BitConverter.ToInt16(bts,0)得到的是1呢?
而换成{0x00,0x80},即 0000 0000 1000 0000得到的却是-32768谢谢