将c#代码转换为Java
本文关键字:Java 转换 代码 | 更新日期: 2023-09-27 18:17:32
这些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')"相同?
Java是否有一些功能与c#中的"ToString('X4')"相同?
Java有Format
类,它的后代有NumberFormat
、DecimalFormat
、DateFormat
等