在c#中反转很长时间

时间:2015-03-25 17:30:22

标签: c# reverse long-integer

我在java中知道你可以通过使用long.reverse(100000001010101)简单地反转long(101010100000001)。但是,c#中是否存在类似这样的内容。

5 个答案:

答案 0 :(得分:2)

你的问题的答案是否定的。但是,它可以通过代码实现。 怎么样......

    public static long RevLong(long l)
    {
        long tmp = l;
        long r = 0L;

        if (tmp < 0)
            tmp *= -1;

        while (tmp > 0)
        {
            r = (r * 10) + (tmp - ((tmp / 10)) * 10);
            tmp = tmp / 10;
        }

        return r * (l < 0 ? -1 : 1);
    }

答案 1 :(得分:1)

怎么样......

public ulong Bit(ulong x, int n)
{
    return (x & (1 << n)) >> n;
}

public ulong ReverseBits(ulong x)
{
    ulong result = 0;
    for (int i = 0; i < 64; i++)
        result = result | (x.Bit(64 - i) << i);
    return result;
}

答案 2 :(得分:0)

有一些有趣的例子here。您可以将其中一个调整为扩展方法,如下所示:

public static class LongExtension
{
    public static ulong Reverse(this ulong value)
    {
        return (value & 0x00000000000000FFUL) << 56 | (value & 0x000000000000FF00UL) << 40 |
               (value & 0x0000000000FF0000UL) << 24 | (value & 0x00000000FF000000UL) << 8 |
               (value & 0x000000FF00000000UL) >> 8 | (value & 0x0000FF0000000000UL) >> 24 |
               (value & 0x00FF000000000000UL) >> 40 | (value & 0xFF00000000000000UL) >> 56;
    }
}

然后你可以这样称呼它:

ulong myLong = 3L;
ulong reversed = myLong.Reverse();

答案 3 :(得分:0)

有点晚了,但我是这样解决的:

public static long Reverse(long i) =>
    BitConverter.ToInt64(BitWiseReverseByteArray(BitConverter.GetBytes(i)).ToArray());

private static IEnumerable<byte> BitWiseReverseByteArray(IEnumerable<byte> array) =>
    array.Select(b => BitWiseReverseByte(b)).Reverse();

private static byte BitWiseReverseByte(byte b)
{
    b = (byte) ((b & 0x55) << 1 | (b >> 1) & 0x55);
    b = (byte) ((b & 0x33) << 2 | (b >> 2) & 0x33);
    b = (byte) ((b & 0x0F) << 4 | (b >> 4) & 0x0F);
    return b;
}

答案 4 :(得分:-2)

希望这会奏效

&#13;
&#13;
string s = 101010100000001.tostring();
char[] charArray = s.ToCharArray();
    Array.Reverse( charArray );
    return new string( charArray );
&#13;
&#13;
&#13;