首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Char到Hex参数

Char到Hex参数
EN

Stack Overflow用户
提问于 2013-06-18 12:22:07
回答 2查看 1K关注 0票数 1

我正在尝试使机器人打字方法变得简单得多。KeyEvent中的大部分密钥码都是十六进制码。

计划:

  1. Stringchar[]
  2. 为-每个通过char[]
  3. 寻找(int)char的十六进制值
  4. keyPress((int)char的十六进制值)
  5. keyRelease((int)char的十六进制值)

到目前为止我所拥有的是:

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.*;
public class Driver
{
    private static Robot r;
    public static void send(String phrase)
    {
        char[] chars = phrase.toCharArray();
        for (char letter:chars)
        {
            //int hex = hex value of (int)letter
            //r.keyPress(hex);
            //r.keyRelease(hex);
        }
    }
    public static void main(String[]args)
    {
        try
        {
            r = new Robot();
            r.delay(5000);
            send("Hello World");
        }
        catch(AWTException e)
        {
            //Nothing
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-18 12:51:21

ASCII字母的键码等于它们的大写字符值。这样你就可以做以下事情:

代码语言:javascript
复制
char[] chars = phrase.toUpperCase().toCharArray();
for (char letter:chars)
{
    int keyCode = (int)letter;
    r.keyPress(keyCode);
    r.keyRelease(keyCode);
}

使用这个循环,字符串"Hello“将给出"hello world”。它不适用于感叹号之类的东西。

此外,如果你不让机器人发送大写字母,你将不得不模拟按下换档键或盖帽锁键。

不过,不确定这种方法是否可靠。为了从java.awt.event.KeyEvent返回正确的键代码常量,您还可以做很多if/ the (或开关)操作。

票数 1
EN

Stack Overflow用户

发布于 2013-06-18 13:26:09

这项工作,但它将有问题的特殊字符,如“你好世界”,见输出。

它希望使用\n UniCode范例更好。

代码语言:javascript
复制
        final char[] chars = phrase.toCharArray();
        for (final char c : chars) {
            try {
                final byte[] tabB = (c + "").getBytes("UTF-8");
// You can replace "UTF-8" by : System.getProperty("sun.jnu.encoding"), 
                for (final byte element : tabB) {
                    System.out.format("%s\t0x%s\n", element,
                            Integer.toHexString(element));
                }
            } catch (final UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
            }
        }

产出:

代码语言:javascript
复制
72  0x48
101 0x65
108 0x6c
108 0x6c
111 0x6f
32  0x20
87  0x57
111 0x6f
114 0x72
108 0x6c
100 0x64
32  0x20
-61 0xffffffc3
-87 0xffffffa9
32  0x20
-61 0xffffffc3
-89 0xffffffa7

在我的电脑上使用System.getProperty("sun.jnu.encoding") -> ISO-8859-15

代码语言:javascript
复制
72  0x48
101 0x65
108 0x6c
108 0x6c
111 0x6f
32  0x20
87  0x57
111 0x6f
114 0x72
108 0x6c
100 0x64
32  0x20
-23 0xffffffe9
32  0x20
-25 0xffffffe7
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17168766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档