小于65535的 int 转byte[] 并且补齐两个byte,,,byte[2].

boyyao 2018-02-24 12:50:47
假设有一个小于等于65536的int 要
转成byte[2]的数组。假设int是 65535

并且吧byte[2]转成16进制要得到FFFF 值。

如果int值较小 byte[2]要前面补0
...全文
923 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 版主 2018-02-24
  • 打赏
  • 举报
回复
那不就是BitConverter.GetBytes吗....
xuzuning 2018-02-24
  • 打赏
  • 举报
回复
            int a = 65535;
            Console.WriteLine(BitConverter.GetBytes(a).Length); //4
            Console.WriteLine(BitConverter.GetBytes((Int16)a).Length); //2 
既然你已经确认他小于 65536 了,那你就告诉 C#:这是一个 Int16 的数,而不是让 C# 去猜你的意图
秋的红果实 2018-02-24
  • 打赏
  • 举报
回复

UInt16 originalData = 65535;
byte[] newByte = BitConverter.GetBytes(originalData);
foreach(byte b in newByte)
{
    MessageBox.Show(b.ToString());

}

输出: 255 255
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
.net 是高位在前的
低字节在前的,兼容早期16位计算机先填写低字节。
  • 打赏
  • 举报
回复
引用 3 楼 boyyao 的回复:
我尝试用byte[] obj = System.BitConverter.GetBytes(65535); 或者1都是得到一个4位的byte。并且是从obj[0]开始的后两位是空。虽然可以再处理。但是感觉有点笨。应该有跟好的办法。。
不笨啊?! 贴出来你取得前两字节的代码。
  • 打赏
  • 举报
回复
.net 是高位在前的,如果你要“前面补0”的结果那么需要交换两个字节的顺序。例如写
int x = 65535;
var r = BitConverter.GetBytes(x).Take(2).Reverse().ToArray();
boyyao 2018-02-24
  • 打赏
  • 举报
回复
我尝试用byte[] obj = System.BitConverter.GetBytes(65535); 或者1都是得到一个4位的byte。并且是从obj[0]开始的后两位是空。虽然可以再处理。但是感觉有点笨。应该有跟好的办法。。
boyyao 2018-02-24
  • 打赏
  • 举报
回复
我并不是想得到16进制的值。。 我是想用两位的byte。。问题中要求16进制的值是想确保转换成byte是否正确。。
  • 打赏
  • 举报
回复
不用考虑中间过程,.net 框架的整数类型的 ToString 可以直接序列化 16 进制结果。例如:
int x = 65533;
var s =x.ToString("x2");

110,536

社区成员

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

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

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