/// </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;
        }
请教代码~~~

解决方案 »

  1.   

    24byte?
    24bit就足够了。一个32位数,也只需要4byte。
      

  2.   

      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;
    具体讲讲吧  我是新手  只能看个大概~~~
      

  3.   

    long l=12345;
    byte[] b = BitConverter.GetBytes(l);这样是4 byte 32位 你要24位的话 取 b[0]~b[2] 即可
      

  4.   

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

  5.   

    那可以改成i<24或者i<=23 应该对结果没影响吧~~~
      

  6.   

    1.long是64位,既然不超过24位,根本就不该用long...2.Windows是little endian,直接取前3byte就是24位...3.小心负数...lz该补补基础课...
    return BitConverter.GetBytes(x).Take(3).ToArray();
      

  7.   

      那用INT型也可以么