首页 > 解决方案 > 使用 String.parseByte(string s) 处理 0x7F 以上的值 - Java

问题描述

我的 Java 代码扫描来自外部文件的字符串以填充数据结构中的字节数组。

特别是,我需要扫描一个两个字符串,然后分配一个包含字符串中文字值的字节(例如“3A”到0x3A)。这些值的范围可以在 [0x00, 0xFF] 之间的任何位置。

有谁知道解决方法?

谢谢,

- 使用 Byte.parseByte(string a) 方法仅适用于小于 Byte.MAX(0x7F) 的值,否则我的代码会生成“NumberFormatException:值超出范围”。
- 使用位操作只会产生垃圾,因为没有转换我只是在移动 ascii 值。

- 尝试解析任何大于字节的原语也会生成 NumberFormatException。

    ...
    String a;
    byte b;
    Scanner fr = new Scanner(pfile);

    fr.useDelimiter(" :|\\n");

        while(fr.hasNext()){
            a = fr.next();
            if(a.charAt(0) != ' ' && a.charAt(0) != '-'){
                //d = Long.parseLong(a);
                b = Byte.parseByte(a.trim(), 16);
                System.out.println("String a : " + a + " Parsed byte: " +   b);
            }
        }
    fr.close();

标签: javabit-manipulation

解决方案


推荐阅读