如何从 Java 中的十进制整数中获取十六进制值?

Posted

技术标签:

【中文标题】如何从 Java 中的十进制整数中获取十六进制值?【英文标题】:How to get a hex value from a decimal integer in Java? 【发布时间】:2011-07-12 14:52:04 【问题描述】:

我不知道如何从 Java 中的整数值生成十六进制“0x83”字符。

我需要一个“0x83”值来表示西里尔字母中的一个字母(该字母:ѓ),以便将它(该字母)发送到我的打印机。当使用我的转换器(如下)将 131(十进制的 0x83)转换为十六进制时,我得到三个数字:0x31、0x33 和 0x31。

public String toHex(String arg) 
    return String.format("%x", new BigInteger(arg.getBytes()));

我需要从这个转换中得到 0x83。

【问题讨论】:

完全不清楚你在做什么。听起来您正在将 string "131" 转换为字节,这根本不是一回事。请显示示例代码。 我发送的参数是整数,在添加 128 后得到大于 128 => 131 的值并转换但它错误。因为我无法在 Eclipse 中插入西里尔字母并进行转换。 public String toHex(String arg) return String.format("%x", new BigInteger(arg.getBytes())); 那么这里的大多数答案就是Integer.toHexString应该可以解决您的问题! 您声称您“发送整数参数”,但您在评论中提供的代码采用 string 参数,而不是整数。请准确,否则很难为您提供帮助。 【参考方案1】:

您是否尝试过查看Java Integer API。这里有几个examples:

【讨论】:

【参考方案2】:

这是一个例子:

String str = Integer.toHexString(131);
System.out.println(str);

【讨论】:

public String toHex(String arg) return String.format("%x", new BigInteger(arg.getBytes())); 我用这个转换器... @Gogoo :- 只需调试代码并观察 arg.getBytes() 行,它会为每个数字生成 ascii 值,因此输出为 31、33、31。 我需要获取 0x83。或者如何发送以及获取 0x83 的值。因为(ѓ)我无法在我的程序中插入链接ascii.ca/cp1251.htm【参考方案3】:

转换时我没有看到问题:

System.out.println(Integer.toHexString(131));

返回 83。

【讨论】:

public String toHex(String arg) return String.format("%x", new BigInteger(arg.getBytes())); 我用这个转换器... @Gogoo 你可以试试String.format("%x", Integer.parseInt(s))【参考方案4】:

如果你正在尝试将整数 131 转换为十六进制字符串,你可以尝试

Integer.toHexString( 131 )

它将以字符串形式返回“83”。

【讨论】:

【参考方案5】:
String cyrillic = Character.toString((char)0x83)

【讨论】:

【参考方案6】:

两种可能,您的打印机需要 0x83 作为字节或字符串/字符

作为字节发送:

int Cyrillic_int = 131; 
byte Cyrillic = (byte) Cyrillic_int;

或者发送一个0x83的字符串表示:

int Cyrillic_int = 131;
String Cyrillic = Integer.toHexString(131);

【讨论】:

以上是关于如何从 Java 中的十进制整数中获取十六进制值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Db2 中的十进制字段中获取无效值列表?

Java中的整数到两位十六进制

整数 布尔值 字符串 for循环

JAVA:从字符串中获取 UTF-8 十六进制值?

如何在java中获取带有前导零的整数中的位数?

JavaScript将RGB整数转换为十六进制[重复]