자바 1.8 (스트림)
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);
}
}
자바 < 1.8
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);
}
}
출력은 다음과 같습니다 80 75 -32 -25
가 왜 "50"이 unhexified 남아있을 것입니다? 결과는 "80 75 -32 -25"가 될 것입니다. – Roshan
공간을 구분 기호로 사용하여'String'을 구문 분석하십시오. 그런 다음 각 값을'Integer.parseInt (String, int) '를 통해 기수가 16 인'Integer'로 변환하십시오. 이 값을 'byte'로 캐스팅하여 부호있는 값으로 변환하십시오. –
당신은 @ Reimeus가 맞습니다. 질문 업데이트 중입니다. 미안합니다. – javaPlease42