长整型数转换为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。 --------------------编程问答--------------------
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;
具体讲讲吧 我是新手 只能看个大概~~~ --------------------编程问答--------------------
具体请教一下 菜鸟没办法~~~ --------------------编程问答-------------------- 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;
这点什么意思啊 ?谢谢了 --------------------编程问答--------------------
把x前24位中的每一位,单独存到一个字节中 --------------------编程问答--------------------
谢谢啊 这下懂了 真的感谢~~~ --------------------编程问答-------------------- 我总觉得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();--------------------编程问答-------------------- 谢谢 菜鸟 刚开始么~~~ --------------------编程问答-------------------- 那用INT型也可以么
补充:.NET技术 , C#