当前位置:编程学习 > JAVA >>

一个函数C代码转成Java代码,谢谢。

--------------------编程问答-------------------- 这个程序有问题 --------------------编程问答--------------------
引用 1 楼 dahlwuyn 的回复:
这个程序有问题


没问题,我都测试通过了。

有什么问题? --------------------编程问答--------------------
引用 2 楼 haohello 的回复:
Quote: 引用 1 楼 dahlwuyn 的回复:

这个程序有问题


没问题,我都测试通过了。

有什么问题?
长度为奇数的时候能正确运行吗 --------------------编程问答--------------------
引用 3 楼 dahlwuyn 的回复:
Quote: 引用 2 楼 haohello 的回复:

Quote: 引用 1 楼 dahlwuyn 的回复:

这个程序有问题


没问题,我都测试通过了。

有什么问题?
长度为奇数的时候能正确运行吗


自己写好了,就这样用吧。

public class EncPack {

public static void main(String args[]) {
char[] pbyInBuffer = "54CD62031D621AE1".toCharArray() ;
char[] pbyOutBuffer = new char[8];
EncPack(pbyInBuffer, pbyOutBuffer, 16);

for(int i=0;i<8;i++)
System.out.printf("%02X ", (int)pbyOutBuffer[i] );

System.out.println();
String s = new String(pbyOutBuffer);
System.out.printf("%d,%s\n" ,s.length(),s);
for(int i=0;i<s.length();i++)
System.out.printf("%02X ", (int)s.toCharArray()[i] );
}
public static int  EncPack(char[] pbyInBuffer, char[] pbyOutBuffer, int iInBuffLen)
{
char   n;
int    iLen, i;

/*
 * *  whether InBuffer data's len can be divided by 2 
 */
if (iInBuffLen % 2 > 0)
iLen = iInBuffLen + 1;
else
iLen = iInBuffLen;

for (i = 0; i < iInBuffLen; i++)
{
pbyInBuffer[i] = Character.toUpperCase(pbyInBuffer[i]);

if (i % 2 != 0) /* if odd number */
{
n = (char) ((char)pbyInBuffer[i] - 0x30);

/*
 * *  Note: 'A' = 65, 'F'= 70.  65-48 = 17, 17-7=10. *
 * For example, this will convert 'A' to value 10. 
 */
if (n > 9)
n = (char)(n - 7);
pbyOutBuffer[i / 2] = (char)(pbyOutBuffer[i / 2] | n);
} else
{
//pbyOutBuffer[i / 2] = ((n = pbyInBuffer[i] - 0x30) > 9 ? n - 7 : n) << 4 ;
n = (char)(pbyInBuffer[i] - 0x30);
if( n > 9 ) n = (char)(n - 7);
pbyOutBuffer[i / 2] = (char)(n << 4);
}
}
return (iLen / 2);
}
}
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,