请教JAVA怎么将十六进制转换为字符串,多谢

请教JAVA怎么将十六进制转换为字符串,多谢,第1张

private static String hexString = "0123456789ABCDEF";

public static void main(String[] args) {

    Systemoutprintln(encode("中文"));

    Systemoutprintln(decode(encode("中文")));

}

/

  将字符串编码成16进制数字,适用于所有字符(包括中文)

 /

public static String encode(String str) {

    // 根据默认编码获取字节数组

    byte[] bytes = strgetBytes();

    StringBuilder sb = new StringBuilder(byteslength  2);

    // 将字节数组中每个字节拆解成2位16进制整数

    for (int i = 0; i < byteslength; i++) {

    sbappend(hexStringcharAt((bytes[i] & 0xf0) >> 4));

    sbappend(hexStringcharAt((bytes[i] & 0x0f) >> 0));

    }

    return sbtoString();

}

 

/

  将16进制数字解码成字符串,适用于所有字符(包括中文)

 /

public static String decode(String bytes) {

    ByteArrayOutputStream baos = new ByteArrayOutputStream(byteslength() / 2);

    // 将每2位16进制整数组装成一个字节

    for (int i = 0; i < byteslength(); i += 2)

    baoswrite((hexStringindexOf(bytescharAt(i)) << 4 | hexString

                    indexOf(bytescharAt(i + 1))));

    return new String(baostoByteArray());

}

亲测可行,支持中文!!!

有用请记得采纳

Java转换十进制为其他进制的两种方法

利用printf():view plaincopy to clipboardprint

public class TigerNumberDemo {

public static void main(String[] args) {

// 输出 19 的十进制表示

Systemoutprintf("%d%n", 19);

// 输出 19 的八进制表示

Systemoutprintf("%o%n", 19);

// 输出 19 的十六进制表示

Systemoutprintf("%x%n", 19);

}

}

public class TigerNumberDemo { public static void main(String[] args) { // 输出 19 的十进制表示

Systemoutprintf("%d%n", 19); // 输出 19 的八进制表示

Systemoutprintf("%o%n", 19); // 输出 19 的十六进制表示

Systemoutprintf("%x%n", 19);

}}

利用Integer类方法:view plaincopy to clipboardprint

public class NumberDemo {

public static void main(String[] args) {

// 十进制 19 转成二进制 10011

Systemoutprintln(IntegertoBinaryString(19));

// 十进制 19 转成十六进制 13

Systemoutprintln(IntegertoHexString(19));

// 十进制 19 转成八进制 23

Systemoutprintln(IntegertoOctalString(19));

}

}

/

说明在第一个文本框中输入你要转换的内容,点击“转换”,就会在第二个文本框中出现,转换后的二进制码。

这时也可以点击“还原”按钮,把第二个文本框中的二进制码还原为,它的真实的字符。当然你也可以直接在第

二个文本框中写出你要还原的二进制码,然后点击“还原”按钮,就可以把第二个文本框中的二进制友还原为

它的真实的字符。

做得很急,最近在考试呀,所以代码可能有bug,要是代码有什么问题,可以联系我。

或是你想要的功能还没有的话,我可以帮你升级。^_^哈哈。想必你是在追女生吧,用这个来给她写情话不错哦

。不过那女生也要会一点点程序哦,不然,她拿到你的二进制码也没办法知道它是什么意思,呵呵

/

import javaawtColor;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJLabel;

import javaxswingJOptionPane;

import javaxswingJTextArea;

public class Print {

public static void main(String[] args) {

new Win();

}

}

class Win {

JTextArea jTextArea = new JTextArea();//输入框

JTextArea jTextArea2 = new JTextArea();//还原框

JTextArea jTextArea1 = new JTextArea();//二进制框

JLabel jLabel = new JLabel("请在下面输入你要转换的内容:");

JLabel jLabe2 = new JLabel("转换后的二进制码为>>>>");

JLabel jLabe3 = new JLabel("还原二进制码后>>>>");

JButton jButton = new JButton("转换");

JButton jButton1 = new JButton("还原");

public Win() {

JFrame jFrame = new JFrame("窗口");

jFramesetLayout(null);

jTextArea2setBounds(10,430,450,80);

jFramegetContentPane()add(jTextArea2);

jLabe3setBounds(90,390,1000,20);

jLabe3setForeground(Colorred);

jFramegetContentPane()add(jLabe3);

jButton1setBounds(10, 380, 60, 40);

jFramegetContentPane()add(jButton1);

jButton1addActionListener(new Lis());

jLabe2setForeground(Colorred);

jLabe2setBounds(80, 150, 1000, 20);

jFramegetContentPane()add(jLabe2);

jButtonsetBounds(10, 140, 60, 40);

jFramegetContentPane()add(jButton);

jButtonaddActionListener(new Lis());

jLabelsetBounds(3, 20, 200, 15);

jFramegetContentPane()add(jLabel);

jTextAreasetBounds(10, 40, 450, 80);

jFramegetContentPane()add(jTextArea);

jTextArea1setBounds(10, 190, 450, 180);

jFramegetContentPane()add(jTextArea1);

jFramesetBounds(200, 50, 500, 600);

jFramesetVisible(true);

jFramesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

}

// 转换为二进制

String ss = "";

public String getBinaryString(String str) {

char[] cstr = strtoCharArray();

StringBuffer sb = new StringBuffer();

for (int i = 0; i < cstrlength; i++) {

if (CharacterisDigit(cstr[i]) || CharacterisLetter(cstr[i])

|| CharactergetType(cstr[i]) == 5) {

sbappend(IntegertoBinaryString(cstr[i]) + " ");

} else {

sbappend(cstr[i] + " ");

}

}

// ss = sbtoString();// 没有换行之前

int n = 60;

while (n < sblength()) {

sbinsert(n, "\n");

n = n + 60;

}

return sbtoString();

}

//侦听处理

class Lis implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (egetSource() == jButton) {

String str = jTextAreagetText();

jTextArea1setText(getBinaryString(str));

if (jTextArea1getLineCount() > 9) {

JOptionPaneshowMessageDialog(null,"在显示二进制码时,数据量太大,显示不完全,你可以分几次转换!",

"有错误!!!!!!!!",1);

}

} else {

//要从jTextAreal中得到内容

StringBuffer sb = new StringBuffer(jTextArea1getText());

for(int i = 0; i < sblength(); i++) {

if (sbcharAt(i) == '\n')

sbdeleteCharAt(i);//把所有的回车符先去掉,不然不好做事

}

String[] lo = sbtoString()split(" ");

StringBuffer sb1 = new StringBuffer();

char c = '\0';

for (int i = 0; i < lolength; i++) {

if (lo[i]length() > 2)//是文字,字母,数字时

c = (char)IntegervalueOf(lo[i], 2)intValue();

else if (lo[i]equals("")) {//当用户输入的是空格时

c = ' ';

} else //是标点时

c = lo[i]toCharArray()[0];

sb1append(c);

}

int n = 40;

while (n < sb1length()) {

sb1insert(n, "\n");

n = n +40;

}

jTextArea2setText(sb1toString());

}

}

}

}

首先16进制里面a代表的是10b 代表11,f代表15

16进制就是每16进1

然后利用这个 原理。得到如下代码。经测试,下边代码两次输出的结果是相同的。

public class test1 {

public static void main(String[] args) {

String str="aabbcc";

String myStr[]={"a","b","c","d","e","f"};

int result=0;

int n=1;

for(int i=strlength()-1;i>=0;i--){

String param=strsubstring(i,i+1);

for(int j=0;j<myStrlength;j++){

if(paramequalsIgnoreCase(myStr[j])){

param="1"+StringvalueOf(j);

}

}

result+=IntegerparseInt(param)n;

n=16;

}

Systemoutprintln(result);

Systemoutprintln(IntegerparseInt(str, 16));

}

}

还有给的分太少啦。。。

public class Main {

public static void main(String[] args) {

int integer = 127; //十进制数

String binary = IntegertoBinaryString(integer);

Systemoutprintln("Binary value of " + integer + " is " + binary + "");

int original = IntegerparseInt(binary, 2);

Systemoutprintln("Integer value of binary '" + binary + "' is " + original + "");

}

}

public class test {

public static void main(String[] args) {

String m = IntegertoBinaryString(120);

Systemoutprintln(m);

}

}

--------------------------------

public class test {

public static void main(String[] args) {

int m = 13;

String s = "";

while (m > 0) {

s = m % 2 + s;

m = m / 2;

}

Systemoutprintln(s);

}

}

double型转二进制字符串涉及到小数部分,没法像Integer那样直接转,底下是一个转换类

public class Test {

    public static void main(String[] args) {

        Test t = new Test();

        double d = 8;

        String s = tdecimal2BinaryStr(d);

        Systemoutprintln("十进制数"+d+"转成二进制数为:"+s);

    }

    /

      十进制数转二进制数

      @param d 十进制数

      @return 十进制数转换成二进制的字符串

     /

    public String decimal2BinaryStr(double d){

        String result = decimal2BinaryStr_Inte(d);

        result += decimal2BinaryStr_Deci(d);

        return result;

    }

    

    /

      十进制整数部分转二进制数

      @param d 十进制数

      @return 十进制整数部分转换成二进制的字符串

     /

    public String decimal2BinaryStr_Inte(double d){

//      return IntegertoBinaryString((int)d);

        /

          本来利用上面的IntegertoBinaryString(int)就可以得到整数部分的二进制结果,

          但为了展示十进制转二进制的算法,现选择以下程序来进行转换

         /

        String result = "";

        long inte = (long)d;

        int index = 0;

        while(true){

            result += inte%2;

            inte = inte/2;

            index++;

            if(index%4 == 0){

                result+=" ";

            }

            if(inte==0){

                while(index%4!=0){

                    result+="0";

                    index++;

                }

                break;

            }

        }

        char[] c = resulttoCharArray();

        char[] cc = new char[clength]; 

        for(int i=clength; i>0; i--){

            cc[cclength-i] = c[i-1];

        }

        return new String(cc);

    }

    

    /

      十进制小数部分转二进制

      @param d 十进制数

      @return 十进制小数部分转换成二进制小数的字符串

     /

    public String decimal2BinaryStr_Deci(double d){

        return decimal2BinaryStr_Deci(d, 0);

    }

    

    /

      十进制小数部分转二进制

      @param d 十进制数

      @param scale 小数部分精确的位数

      @return 十进制小数部分转换成二进制小数的字符串

     /

    public String decimal2BinaryStr_Deci(double d, int scale){

        double deci = sub(d,(long)d);

        if(deci==0){

            return "";

        }

         //为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度

        if(scale==0){

            scale = (StringvalueOf(deci)length()-2)4;

        }

        int index = 0;

        StringBuilder inteStr = new StringBuilder();

        double tempD = 0d;

        while(true){

            if(deci==0 || index==scale){

                while(index%4!=0){

                    inteStrappend("0");

                    index++;

                }

                break;

            }

            if(index==0){

                inteStrappend(""); 

            }

            tempD = deci2;

            inteStrappend((int)tempD);

            deci = sub(tempD ,(int)tempD);

            index++;

            if(index%4 == 0){

                inteStrappend(" ");

            } 

        }

        return inteStrtoString();

    }

    

    

    /

      提供精确的减法运算。

      @param v1 被减数

      @param v2 减数

      @return 两个参数的差

     /

    public static double sub(double v1, double v2) {

        BigDecimal b1 = new BigDecimal(DoubletoString(v1));

        BigDecimal b2 = new BigDecimal(DoubletoString(v2));

        return b1subtract(b2)doubleValue();

    }

}

以上就是关于请教JAVA怎么将十六进制转换为字符串,多谢全部的内容,包括:请教JAVA怎么将十六进制转换为字符串,多谢、Java中如何实现十进制到其他进制的转换、java 进制转换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9807253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存