JAVA-GUI实现字符串与16进制HEX互转

最近在使用NB-IoT进行STM32开发时经常遇到需要将字符串转为16进制数据的情况,在使用大多数模块以及UDP等通讯协议时,也大多需要将字符串转为16进制后再传输,所以我决定用JAVA GUI制作一个窗体程序可以方便的实现字符串和16进制数据的互相转换。

一、编写两个转换方法

首先是字符串转16进制方法,虽然char[]数组更方便转换,但是由于GUI中JTextField通常都是String类型,还是将方法的参数设为String类型:

/**
 * String转16进制
 * @param ascii
 * @return
 */
static String Ascii2Hex(String ascii) {
    char[] chars = ascii.toCharArray();
    StringBuffer hex = new StringBuffer();
    for (int i = 0;i < chars.length;i++) {
        hex.append(Integer.toHexString((int)chars[i]));
    }
    return hex.toString().toUpperCase();
}

然后是16进制转字符串的方法,同样其参数为String类型:

/**
 * 16进制转String
 * @param hex
 * @return
 */
static String Hex2Ascii(String hex) {
    String temp = "";
    for (int i = 0; i < hex.length() / 2; i++) {
        temp = temp + (char) Integer.valueOf(hex.substring(i * 2, i * 2 + 2), 16).byteValue();
    }
    return temp;
}

二、窗体类

实现了两个转换的方法后,就可以新建一个类继承自JFrame,在窗口类中布局,在窗口类中,我使用简单的线性布局来实现。将第一个JTextField的文字作为转换方法的参数,得到返回值输出到第二个JTextField。


JAVA-GUI实现字符串与16进制HEX互转_第1张图片
1.png
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @Author :王皓月
 * @Date :2018/6/16 下午10:40
 * @Description :窗体类
 */

public class ToolGUI extends JFrame {

    JTextField textField1;
    JButton button1;
    JButton button2;
    JTextField textField2;

    public ToolGUI() {
        setVisible(true);
        setTitle("16进制与字符串转换");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(400,400,400,130);
        setLayout(new FlowLayout());
        Container container = getContentPane();
        container.setBackground(Color.WHITE);

        textField1 = new JTextField(30);
        container.add(textField1);

        button1 = new JButton("ASCII转HEX");
        button2 = new JButton("HEX转ASCII");

        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String INPUT = textField1.getText().toString();
                String OUTPUT = Hex_Ascii.Ascii2Hex(INPUT);
                textField2.setText(OUTPUT);
            }
        });

        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String INPUT = textField1.getText().toString();
                String OUTPUT = Hex_Ascii.Hex2Ascii(INPUT);
                textField2.setText(OUTPUT);
            }
        });

        container.add(button1);
        container.add(button2);

        textField2 = new JTextField(30);
        container.add(textField2);

        container.validate();
        setResizable(false);
    }

}

三、主函数

最后在主类中新建一个窗体类的对象即可。

public class main {
    public static void main(String[] args) {
        new ToolGUI();
    }
}

你可能感兴趣的:(JAVA-GUI实现字符串与16进制HEX互转)