首页 新闻 会员 周边

C# byte里某两位转换成int

0
悬赏园豆:5 [已解决问题] 解决于 2016-01-21 10:02
   byte[] bytes = { 0, 7, 14, 16, 10, 52, 55, 7, 87, 15, 14, 32, 54, 7, 87, 15, 14, 32, 54 };

如何把 bytes[2],bytes[3],合并成一个int 类型数字。

C#
豌豆夹的主页 豌豆夹 | 初学一级 | 园豆:6
提问于:2015-12-22 15:40
< >
分享
最佳答案
2

不知道你要把哪一位放到int的高位上去,大致就是如下这样

byte hign = bytes[2];
byte low = bytes[3];
int val = (high & 0xFF) << 8 | low;
收获园豆:2
灰色逻辑 | 菜鸟二级 |园豆:292 | 2015-12-22 17:34
其他回答(3)
0

byte的取值不能大于255,也就是说bytes[x]总是不会大于255,在这个范围内是可以直接变成int来使用。

现在的问题变成了把两个不大于255的int合并成一个int数字,问题就简单了吧~

收获园豆:1
米修君 | 园豆:553 (小虾三级) | 2015-12-22 16:06

不太明白,你的意思是 int a=bytes[2]+bytes[3]; 这样得到的就是对的值?

支持(0) 反对(0) 豌豆夹 | 园豆:6 (初学一级) | 2015-12-22 16:07

@豌豆夹: 

不是的,

如果你是希望 bytes[1]+bytes[2] => 714 这样的话,int.parse(bytes[1].tostring()+bytes[2].tostring())

支持(0) 反对(0) 米修君 | 园豆:553 (小虾三级) | 2015-12-22 16:10
0
1  byte[] bytes = { 0, 7, 14, 16, 10, 52, 55, 7, 87, 15, 14, 32, 54, 7, 87, 15, 14, 32, 54 };
2             int sum = Convert.ToInt32(bytes[2].ToString() + bytes[3].ToString());         
3             Console.WriteLine(sum);
收获园豆:1
SeanAstin | 园豆:237 (菜鸟二级) | 2015-12-22 16:35
0

你的意思是有2个字节你要把他当成int类型读出值来。

但int类型是32字节的。当成短整形读的话倒是可以简单的做法就是

byte[1]*(短整形)(2^8)+byte[2]

收获园豆:1
吴瑞祥 | 园豆:29449 (高人七级) | 2015-12-22 17:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册