【初学者求教】如何拼接二进制,得到整数值。

OROCHIORI572 2010-05-17 09:46:21
a~d分别代表一个数的32位二进制的每八位分段。

举个例子:

byte a =1; 对应的二进制值为—>00000001
byte b =64; 对应的二进制值为—>01000000
byte c = 128; 对应的二进制值为—>10000000
byte d = 16; 对应的二进制值为—>00010000

那么,我想要的那个数为—>00000001 01000000 10000000 00010000
转化成整数为—>21004304

代码应该怎样写呢? 怎样才能实现a b c d 这四个数的二进制拼接得到整数呢?(代码不会 写 )

希望高手指点,万分感激!!!!
...全文
1267 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
OROCHIORI 2011-06-18
  • 打赏
  • 举报
回复

byte[] abc = new byte[4];
abc[0] = 1;
abc[1] = 64;
abc[2] = 128;
abc[3] = 16;
Int32 result = Convert.ToInt32((abc[0] << 24) + (abc[1] << 16) + (abc[2] << 8) + abc[3]);
OROCHIORI572 2010-05-17
  • 打赏
  • 举报
回复
感谢各位回复!!问题解决了,学习了!!!
水平有限,给分不对的地方多多包涵!!!!!
chichenzhe 2010-05-17
  • 打赏
  • 举报
回复
int转换成byte数组原理

例如int 300,因为int占4字节,所以byte数组长度为4,先将300转换成二进制:

00000000 00000000 00000001 00101100,然后将每个字节转换成十进制由低到高存入byte数组中,所以最后结果是44 1 0 0 ,byte[0]=44 byte[1]=1 byte[2]=0 byte[3]=0
-----------------------
上面的概念你好像不清楚,所以我贴给你看.

http://topic.csdn.net/u/20100511/14/db02b2f3-fe78-48f0-b09e-febc8f29d963.html
这个帖子原理和代码都有我不赘述了.
billanking 2010-05-17
  • 打赏
  • 举报
回复
在内存中,32位的数值型数据是这样存放的,在组合的时候移位就可以组成一个数值了。

UInt32 result = Convert.ToUInt32((a << 24) + (b << 16) + (c << 8) + d);
zzx509 2010-05-17
  • 打赏
  • 举报
回复

int[] bytes = new int[] {1,64,128,16 };
int result=0;
for (int i = bytes.Length-1; i >-1 ; i--)
{

result += bytes[i] << ((bytes.Length-1-i) * 8);
}
Console.WriteLine("result:"+result);
Justin-Liu 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leon0905 的回复:]
val为Byte[4]

C# code
UInt32 result = Convert.ToUInt32((val[0] << 24) + (val[1] << 16) + (val[2] << 8) + val[3]);

把val转成无符号整数
[/Quote]
对 移位操作就可以了
gxingmin 2010-05-17
  • 打赏
  • 举报
回复
那按1楼方法可以
lanfengsese 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leon0905 的回复:]
val为Byte[4]

C# code
UInt32 result = Convert.ToUInt32((val[0] << 24) + (val[1] << 16) + (val[2] << 8) + val[3]);

把val转成无符号整数
[/Quote]
up
leon0905 2010-05-17
  • 打赏
  • 举报
回复
补充,0为最高位,3为最低位
OROCHIORI572 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gxingmin 的回复:]
21004304跟abcd有啥关系?
楼主应该把逻辑规律说一下
[/Quote]
从左到右 一共32位 分成4断 a | b | c | d
leon0905 2010-05-17
  • 打赏
  • 举报
回复
val为Byte[4]
UInt32 result = Convert.ToUInt32((val[0] << 24) + (val[1] << 16) + (val[2] << 8) + val[3]);

把val转成无符号整数
gxingmin 2010-05-17
  • 打赏
  • 举报
回复
21004304跟abcd有啥关系?
楼主应该把逻辑规律说一下

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧