SOS 急急急...ushort,long转入byte[]数组问题????

灰鸽 2012-02-09 09:14:26
//比如这样是两位数字的数组
ushort a = 0x1234;
byte[] by = new byte[3];
by[0] = (byte)((0xff00 & a)>>8);
by[1] = (byte)((0xff & a));
for (int i = 0; i < 3; i++)
{
Console.WriteLine(by[i]);
}
//输出等于:18 52 这是正确的


其中的0xff00 & a 是什么意思???
且当long a 时真的不知道怎么转....如下:
//比如这样是4位数字的数组
long a = 0x921225;
byte[] by = new byte[4];
by[0] = (byte)((0xff00 & a)>>8);
by[1] = (byte)((0xff & a));
//by[2] = (byte)(a); //不知道啥写????
//by[3] = (byte)(a); //0..>_<..0
for (int i = 0; i < by.Length; i++)
{
Console.WriteLine(by[i]);
}


求解大侠们...................
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
灰鸽 2012-02-14
  • 打赏
  • 举报
回复
马马虎虎自己搞定了,不过还是谢谢大家
苦苦的潜行者 2012-02-10
  • 打赏
  • 举报
回复
转换一下就行了,这里只给你讲第一个例子(0xff00 & a)>>8

a=0x1234 //二进制为 0001001000110100
0xff00 //二进制为 1111111100000000
0xff00 & a 与运算 //结果 0001001000000000
然后(0xff00 & a)>>8 右移8个位 //结果为 0000000000010010
转换为int(十进制),1*2^4+0*2^3+0*2^2+1*2^1+0*2^0=18
灰鸽 2012-02-10
  • 打赏
  • 举报
回复
问题就是不懂怎么存啊.........
  • 打赏
  • 举报
回复
long 不是 64么,byte 不是8 么,那么数组长度不是应该为8么

其实和0xff按位与有什么意义么?
long按8位分别存入byte数组而已嘛
灰鸽 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 diandian82 的回复:]

0xff00 & a
就是0xff00跟a进行与运算

long是64位,可以进行移位操作,然后转成byte
[/Quote]
用我上面的案子示范下。。。。。。理论我还真看不来啊。。。
diandian82 2012-02-09
  • 打赏
  • 举报
回复
0xff00 & a
就是0xff00跟a进行与运算

long是64位,可以进行移位操作,然后转成byte

110,537

社区成员

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

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

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