我是靠谱客的博主 潇洒时光,最近开发中收集的这篇文章主要介绍Java将C语言16进制无符号数组转为字符串输出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近写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进制无符号数组转为字符串输出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部