概述
最近写JNI,遇到一个很麻烦的问题,C语言的unsigned char 16进制数组想要在Java中原样字符串输出,思索了一下午找到了解决方法,代码如下:
private static String buling(String str){
return "0" + str;
}
public static String reverse(String s) {
String r = "";
for (int i = s.length() - 1; i >= 0; i--) {
char ch = s.charAt(i);
r = r + ch;
}
while (r.length() < 2) {
r = buling(r);
}
return r;
}
public static String decToHex(int dec) {
String hex = "";
while (dec >= 10) {
int remainder = dec % 16;
dec = dec / 16;
if (remainder < 10) {
hex += remainder;
} else {
char ch = (char) ('a' + (remainder - 10));
hex += ch;
}
}
if (dec != 0) {
hex += dec;
}
return reverse(hex);
}
public static void main(String[] args) {
String contractid = "";
for (int i = 0; i < uidMeanBO.getContractid().length; i++) {
contractid += decToHex(uidMeanBO.getContractid()[i]&0x0FF);
}
System.out.println("contractid=" + contractid);
}
注意:其中0x0FF是将1字节的无符号字符进行原样输出,如果是2字节、4字节,请参考以下文章,传送门:
Java处理C语言中的unsigned char类型进行原样输出
我们已通过上面的方式获取到了16进制字符串,想要将16进制转为10进制,请参考以下文章,传送门:
Java中将十六进制转换成十进制
C代码中contractid无符号数组,图示如下:
Java代码中最终输出结果,图示如下:
到此问题解决。
最后
以上就是潇洒时光为你收集整理的Java将C语言16进制无符号数组转为字符串输出的全部内容,希望文章能够帮你解决Java将C语言16进制无符号数组转为字符串输出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复