将C#代码转换为Java

时间:2013-06-10 04:58:06

标签: c# java

这些C#代码用于CRC(CyclicRedundancyCheck),运行正确。

    public static void ByteCRC(ref int CRC, char Ch)
    {
        int genPoly = 0x18005;
        CRC ^= (Ch << 8);
        for (int i = 0; i < 8; i++)
            if ((CRC & 0x8000) != 0)
                CRC = (CRC << 1) ^ genPoly;
            else
                CRC <<= 1;
        CRC &= 0xffff;
    }

    public static int BlockCRC(String Block)
    {
        int BlockLen = Block.Length;
        int CRC = 0;
        for (int i = 0; i < BlockLen; i++)
            ByteCRC(ref CRC, Block[i]);
        return CRC;
    }

    //Invoking the function
    String data="test"; //testing string
    Console.WriteLine(BlockCRC(data).ToString("X4"));

我想将其转换为java代码。首先要解决“ref”(在C#中)的问题,我使用全局变量并进行其他一些语法更改。这是Java代码。

    public static int CRC;
    public static void ByteCRC(int CRC, char Ch)
    {
        int genPoly = 0x18005;
        CRC ^= (Ch << 8);
        for (int i = 0; i < 8; i++)
            if ((CRC & 0x8000) != 0)
                CRC = (CRC << 1) ^ genPoly;
            else
                CRC <<= 1;
        CRC &= 0xffff;
    }

    public static int BlockCRC(String Block)
    {
        int BlockLen = Block.length();
        CRC = 0;
        for (int i = 0; i < BlockLen; i++)
            ByteCRC(CRC, Block.charAt(i));
        return CRC;
    }

    //Invoking the function
    String data="test"; //testing string
    System.out.println(BlockCRC(data));

我知道答案不是十六进制,但它甚至不是正确的十进制数,结果是0.什么错了?另一个问题,java在C#中的功能是否与“ToString('X4')”相同?

1 个答案:

答案 0 :(得分:0)

  

Java在C#中的功能是否与“ToString('X4')”相同?

Java有Format个类,此类的后代NumberFormatDecimalFormatDateFormat等。