Java Applet>将“Unicode转换为十六进制”(获取TextArea的Unicode并显示HEX值)

时间:2011-04-02 09:53:02

标签: java utf-8 hex

我在将UNICODE转换为HEX值时遇到了一些麻烦。 我在网上找不到合适的参考,StackOverflow中的讨论基于“HEX to unicode only”。

我需要的是一些类似但有些修改的东西(仅限Java逃脱)

http://javaboutique.internet.com/unicode/

上面的applet显示粘贴在TextArea上的UTF-8的十六进制值。

我需要的是获取TextArea的Unicode的HEX值并将它们分配给变量或显示它们。

基本的启动我如下。

import java.awt.*;
import java.applet.*;

public class unicodeToHEX
extends      Applet
{
    TextField output;
    TextArea  input;

    public void init() {
        output = new TextField("Click for 'Text to speech' ",40);
        add(output);
        input  = new TextArea( "Type text here",8,40);
        add(input);
        output.setEditable(false);
    }

    public boolean gotFocus( Event evt, Object what ) {
        if (evt.target == input) {
        output.setText("Type text in below text area");
    }
    return super.gotFocus( evt, what );
    }

    public boolean lostFocus( Event evt, Object what ) {

        // Have super handle character entry:
        boolean result = super.lostFocus( evt, what );

        if (evt.target == input) {
            // Get string in input textfield:
            String s = input.getText();

            // Count newlines:
            int  len   = s.length();
            int  newlines = 0;
                for (int i = len;   i --> 0; ) {
                if (s.charAt(i) == '\n')   ++newlines;
            }





            // Report linecount in output textfield:
            output.setText("Text area contains " + newlines + " newlines");

        }

    return result;
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找这样的东西:

byte[] bytes = input.getText().getBytes("UTF-8");

StringBuilder sb = new StringBuilder(2 * bytes.length);
for (byte b : bytes) {
    sb.append("0123456789ABCDEF".charAt((b & 0xF0) >> 4));
    sb.append("0123456789ABCDEF".charAt((b & 0x0F)));
    sb.append("-"); // place "-" between each conversion
}
sb.deleteCharAt(sb.length() - 1); // remove trailing "-"
String hex = sb.toString();

output.setText("Text area UTF-8 in hex: " + hex);