如何将字符串转换为十六进制和十六进制转换为字符串?

前端之家收集整理的这篇文章主要介绍了如何将字符串转换为十六进制和十六进制转换为字符串?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 java中为串口发送和接收数据做了简单的程序.我将串口设备连接到环回测试(Rx到Tx).它工作正常.但我无法发送和接收十六进制数据到串口和recive串口.在我的设备中使用了FT232BL芯片.所以有任何dll或其他库需要发送和接收十六进制数据到串口设备.我的代码如下.
enter code here
package x.rayimagecapture;

import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class TwoWaySerialComm extends JPanel implements ActionListener {

    OutputStream out;
    private javax.swing.JButton btn;
    private javax.swing.JScrollPane jScrollPane1;
    public static javax.swing.JLabel jLabel1;
    public static javax.swing.JTextField textField;
    public static boolean flag = false;
    public static int count = 50;
//    TimerWindow tmr=new TimerWindow();
    public static Timer tmr = new Timer(1000,new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
                        count++;
            jLabel1.setText("" + count);
        }
    });

    public TwoWaySerialComm() {
        super();
        textField = new javax.swing.JTextField();
        btn = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jLabel1 = new javax.swing.JLabel();
        textField.setText(""); // NOI18N
//        tmr.setDelay(0);

        btn.setFont(new java.awt.Font("Tahoma",12)); // NOI18N
        btn.setText("Send"); // NOI18N
        btn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                serialwrite();
            }
        });

//        textArea.setColumns(20);
//        textArea.setRows(20);
//        textArea.setTabSize(0);
        jScrollPane1.setViewportView(jLabel1);

        javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(this);
        this.setLayout(panelLayout);
        panelLayout.setHorizontalGroup(
                panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(panelLayout.createSequentialGroup()
                .addComponent(textField,javax.swing.GroupLayout.PREFERRED_SIZE,300,javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btn,javax.swing.GroupLayout.DEFAULT_SIZE,84,Short.MAX_VALUE)
                .addContainerGap())
                .addComponent(jScrollPane1));
        panelLayout.setVerticalGroup(
                panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(panelLayout.createSequentialGroup()
                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(textField,47,javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(btn,37,javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane1,218,Short.MAX_VALUE)));
    }

    void connect(String portName) throws Exception {
        CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
        if (portIdentifier.isCurrentlyOwned()) {
            System.out.println("Error: Port is currently in use");
        } else {
            CommPort commPort = portIdentifier.open(this.getClass().getName(),2000);

            if (commPort instanceof SerialPort) {
                SerialPort serialPort = (SerialPort) commPort;
                serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
                serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
                InputStream in = serialPort.getInputStream();
                out = serialPort.getOutputStream();

                (new Thread(new SerialReader(in))).start();
//                (new Thread(new SerialWriter(out))).start();

            } else {
                System.out.println("Error: Only serial ports are handled by this example.");
            }
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        serialwrite();
    }

    public void serialwrite() {
        try {
            this.out.write(textField.getText().toString().getBytes());
            count = 00;
//            tmr.start();
            tmr.start();
            this.out.flush();
        } catch (IOException ex) {
            Logger.getLogger(TwoWaySerialComm.class.getName()).log(Level.SEVERE,null,ex);
        }
    }

    /**
     *
     */
    public static class SerialReader implements Runnable {

        InputStream in;

        public SerialReader(InputStream in) {
            this.in = in;
        }

        public void run() {
            byte[] buffer = new byte[1024];
            int len = -1;
            try {
                while ((len = this.in.read(buffer)) != -1) {
//                    textArea.append(" " + new String(buffer,len));
                    String str = new String(buffer,len);
                    System.out.print(str);
                    if (!str.isEmpty()) {
//                        tmr.stop();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     *
     */
    public static class SerialWriter implements Runnable {

        OutputStream out;

        public SerialWriter(OutputStream out) {
            this.out = out;
        }

        public void run() {
            try {
                int c = 0;
                while ((c = System.in.read()) != -1) {
//                    this.out.write(c);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        TwoWaySerialComm tws = new TwoWaySerialComm();
        JFrame frame = new JFrame();
        frame.setSize(400,300);
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(tws);
        try {
            tws.connect("COM11");
        } catch (Exception ex) {
            Logger.getLogger(TwoWaySerialComm.class.getName()).log(Level.SEVERE,ex);
        }
        frame.setVisible(true);
    }
}

解决方法

字符串到十六进制
Integer.decode(hexString);

十六进制到字符串

Integer.toHexString(integer);

猜你在找的Java相关文章