当前位置:编程学习 > C#/ASP.NET >>

长整型数转换为24位二进制表示的字节数组

/// </summary>
        /// <param name="x">要转换的长整型数,这个数的大小不会超过2的24次方</param>
        /// <returns>二进制表示的字节数组</returns>
        private byte[] ConvertToBinaryArray(long x)
        {
            byte[] binaryArray = new byte[24];
            for (int i = 0; i != 23; i++)
            {
                binaryArray[23 - i] = (byte)(x & 1);
                x = x >> 1;
            }
            return binaryArray;
        }
请教代码~~~ --------------------编程问答-------------------- 一般24位3字节就够了,如果你就是要24字节表示法的话,代码好像没啥问题 --------------------编程问答-------------------- 24byte?
24bit就足够了。

一个32位数,也只需要4byte。 --------------------编程问答--------------------
引用 1 楼 lihanbing 的回复:
一般24位3字节就够了,如果你就是要24字节表示法的话,代码好像没啥问题

  private byte[] ConvertToBinaryArray(long x)
 byte[] binaryArray = new byte[24];
  for (int i = 0; i != 23; i++)
  {
  binaryArray[23 - i] = (byte)(x & 1);
  x = x >> 1;
  }
  return binaryArray;
具体讲讲吧  我是新手  只能看个大概~~~ --------------------编程问答--------------------
引用 2 楼 caozhy 的回复:
24byte?
24bit就足够了。

一个32位数,也只需要4byte。

具体请教一下  菜鸟没办法~~~ --------------------编程问答-------------------- long l=12345;
byte[] b = BitConverter.GetBytes(l);

这样是4 byte 32位 你要24位的话 取 b[0]~b[2] 即可 --------------------编程问答--------------------
引用 5 楼 lihanbing 的回复:
long l=12345;
byte[] b = BitConverter.GetBytes(l);

这样是4 byte 32位 你要24位的话 取 b[0]~b[2] 即可

  binaryArray[23 - i] = (byte)(x & 1);
  x = x >> 1;
这点什么意思啊  ?谢谢了   --------------------编程问答--------------------
引用 6 楼 kingofpopisnn 的回复:
  binaryArray[23 - i] = (byte)(x & 1);
  x = x >> 1;
这点什么意思啊  ?谢谢了

把x前24位中的每一位,单独存到一个字节中 --------------------编程问答--------------------
引用 7 楼 lihanbing 的回复:
引用 6 楼 kingofpopisnn 的回复:

binaryArray[23 - i] = (byte)(x & 1);
x = x >> 1;
这点什么意思啊 ?谢谢了

把x前24位中的每一位,单独存到一个字节中

谢谢啊  这下懂了  真的感谢~~~ --------------------编程问答--------------------
引用 8 楼 kingofpopisnn 的回复:
引用 7 楼 lihanbing 的回复:
引用 6 楼 kingofpopisnn 的回复:

binaryArray[23 - i] = (byte)(x &amp; 1);
x = x >> 1;
这点什么意思啊 ?谢谢了

把x前24位中的每一位,单独存到一个字节中

谢谢啊 这下懂了 真的感谢~~~
我总觉得i可以等于23吧~~~ --------------------编程问答--------------------
引用 9 楼 kingofpopisnn 的回复:
我总觉得i可以等于23吧~~~


你说得对 --------------------编程问答--------------------
引用 10 楼 lihanbing 的回复:
引用 9 楼 kingofpopisnn 的回复:
我总觉得i可以等于23吧~~~


你说得对

那可以改成i<24或者i<=23 应该对结果没影响吧~~~ --------------------编程问答-------------------- 1.long是64位,既然不超过24位,根本就不该用long...

2.Windows是little endian,直接取前3byte就是24位...

3.小心负数...

lz该补补基础课...
return BitConverter.GetBytes(x).Take(3).ToArray();
--------------------编程问答--------------------
引用 12 楼 vrhero 的回复:
1.long是64位,既然不超过24位,根本就不该用long...

2.Windows是little endian,直接取前3byte就是24位...

3.小心负数...

lz该补补基础课...

C# code

return BitConverter.GetBytes(x).Take(3).ToArray();
谢谢   菜鸟  刚开始么~~~ --------------------编程问答--------------------
引用 13 楼 kingofpopisnn 的回复:
引用 12 楼 vrhero 的回复:
1.long是64位,既然不超过24位,根本就不该用long...

2.Windows是little endian,直接取前3byte就是24位...

3.小心负数...

lz该补补基础课...

C# code

return BitConverter.GetBytes(x).Take(3).ToArray();
  那用INT型也可以么 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,