如何将String(字节数组作为字符串)转换为short

时间:2019-03-02 11:52:09

标签: java arrays casting short typecasting-operator

您好,我想将Byte数组(即0x3eb)转换为short,所以我将0x3eb视为字符串,并尝试转换为short,但它引发了Numberformat Exception ...有人请帮助我

import java.io.UnsupportedEncodingException;
public class mmmain
{

    public static void main(String[] args) throws UnsupportedEncodingException 
    {
        String ss="0x03eb";
        Short value = Short.parseShort(ss);
        System.out.println("value--->"+value);
    }
}


Exception what im getting is 
Exception in thread "main" java.lang.NumberFormatException: 
For input string: "0x3eb" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:491)
    at java.lang.Short.parseShort(Short.java:117)
    at java.lang.Short.parseShort(Short.java:143)
    at mmmain.main(mmmain.java:14)

即使我尝试通过

将0x3eb转换为字节

byte [] bytes = ss.getBytes();

但是我没有发现任何解析字节短的实现。

预先感谢

4 个答案:

答案 0 :(得分:2)

请参见parseShort中的doc

  

将字符串参数解析为带符号的十进制短整数。那些角色   字符串中的所有字符必须全部为十进制数字,但第一个除外   字符可以是ASCII减号'-'('\ u002D'),以表示   负值或ASCII加号'+'('\ u002B')表示   正值。

要分析的字符串只能包含小数字符和符号字符,不能包含0x前缀。

尝试:

String ss="3eb";
Short value = Short.parseShort(ss, 16);

答案 1 :(得分:1)

由于您使用的字符串值是一个十六进制值,要将其转换为短值,您需要使用子字符串删除0x并按如下所示传递基数:

Short.parseShort(yourHexString.substring(2), 16)

这里16是基数。在文档here中提供更多信息。

更新

由于OP要求提供更多说明,请添加以下信息。

short数据类型只能具有-32,768到32,767之间的值。它不能直接保存0x3eb,但可以保存它的等效十进制值。这就是为什么当您将其解析为short变量并进行打印时,它显示1003的原因,这是0x3eb的十进制等效项。

答案 2 :(得分:1)

您必须从一开始就剪掉“ 0x”:

short.parseShort(yourHexString.Substring(2), 16)

答案 3 :(得分:1)

遵循此文档可能会对您String to byte array, byte array to String in Java

有帮助