Java将十六进制转换为有符号8位代码

Java将十六进制转换为有符号8位代码,java,hex,8-bit,Java,Hex,8 Bit,我需要将表示为字符串的十六进制数转换为有符号的8位字符串 例如:给定此代码段: String hexideciaml = new String("50 4b e0 e7"); String signed8Bit = convertHexToSigned8Bit(hexideciaml); System.out.print(signed8Bit); 输出应为: “8075-32-25” 所以我非常想用Java实现这个网站的一部分 更新:解决方案需要适用于JRE6,无需其他JAR。Java1.

我需要将表示为字符串的十六进制数转换为有符号的8位字符串

例如:给定此代码段:

String hexideciaml = new String("50  4b e0  e7");
String signed8Bit = convertHexToSigned8Bit(hexideciaml);
System.out.print(signed8Bit);
输出应为: “8075-32-25”

所以我非常想用Java实现这个网站的一部分

更新:解决方案需要适用于JRE6,无需其他JAR。

Java1.8(流)

Java 1)//如果数组中有多个项,请添加最后一项 append((字节)Integer.parseInt(tokens[tokens.length-1],16)); 返回result.toString(); } 公共静态void main(字符串[]args){ 字符串十六进制=“50 4b e0 e7”; 字符串signed8Bit=convertHexToSigned8Bit(十六进制); 系统输出打印(签名8bit); } } 输出为:8075-32-25

Java 1)//如果数组中有多个项,请添加最后一项 append((字节)Integer.parseInt(tokens[tokens.length-1],16)); 返回result.toString(); } 公共静态void main(字符串[]args){ 字符串十六进制=“50 4b e0 e7”; 字符串signed8Bit=convertHexToSigned8Bit(十六进制); 系统输出打印(签名8bit); } }
输出是:8075-32-25

为什么“50”仍然没有被验证?我希望输出为“8075-32-25”,使用空格作为分隔符解析
字符串。然后通过
Integer.parseInt(String,int)
将每个值转换为基数为16的
整数。将该值强制转换为
字节
,将其转换为有符号值。您是正确的@Reimeus。更新问题。很抱歉,为什么“50”仍然不被确认?我希望输出为“8075-32-25”,使用空格作为分隔符解析
字符串。然后通过
Integer.parseInt(String,int)
将每个值转换为基数为16的
整数。将该值强制转换为
字节
,将其转换为有符号值。您是正确的@Reimeus。更新问题。很抱歉。嗯,似乎没有编译。我发现此错误
类型数组的方法流(字符串[])未定义,解决方案需要用于JRE6。另外,
s2
在哪里初始化?Ofc不会为JRE6编译。我使用了自JRE8以来出现的流。等一下,我将重写它,因为JRE6与JRE6完美配合。我建议您使用两种解决方案更新您的答案,一种用于Jre6,另一种用于Jre8。那我就不回答你了。非常感谢。嗯,似乎没有编译。我发现此错误
类型数组的方法流(字符串[])未定义,解决方案需要用于JRE6。另外,
s2
在哪里初始化?Ofc不会为JRE6编译。我使用了自JRE8以来出现的流。等一下,我将重写它,因为JRE6与JRE6完美配合。我建议您用两种解决方案更新您的答案,1用于Jre6,1用于Jre8。那我就不回答你了。非常感谢。
import java.util.Arrays;

public class HexToDec {

    public static String convertHexToSigned8Bit(String hex) {
        return Arrays
                .stream(hex.split(" +"))
                .map(s -> "" + (byte) Integer.parseInt(s, 16))
                .reduce((s, s2) -> s + " " + s2)
                .get();
    }


    public static void main(String[] args) {
        String hexidecimal = "50  4b e0  e7";
        String signed8Bit = convertHexToSigned8Bit(hexidecimal);
        System.out.print(signed8Bit);
    }

}
import java.util.Arrays;

public class HexToDec {

    public static String convertHexToSigned8Bit(String hex) {
        String[] tokens = hex.split(" +");
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < tokens.length - 1; i++) { //append all except last
            result.append((byte) Integer.parseInt(tokens[i], 16)).append(" ");
        }
        if (tokens.length > 1) //if more than 1 item in array, add last one
            result.append((byte) Integer.parseInt(tokens[tokens.length - 1], 16));
        return result.toString();
    }


    public static void main(String[] args) {
        String hexidecimal = "50  4b e0  e7";
        String signed8Bit = convertHexToSigned8Bit(hexidecimal);
        System.out.print(signed8Bit);
    }

}