깨진 Hex Code decode 하기

2024. 11. 17. 17:11Java

깨진 문구

Test \\xED\\x99\\x94\\xEB\\xA9\\xB4 \\xED\\x99\\x94\\xEB\\xA9\\xB4 !!

decode

String input = "Test \\xED\\x99\\x94\\xEB\\xA9\\xB4 \\xED\\x99\\x94\\xEB\\xA9\\xB4 !!";

// Sanitize the input to keep only valid hexadecimal characters
String decoded = decodeHex2String(input);
System.out.println("Decoded String: " + decoded);

public static String decodeHex2String(String input) {
    // A list to collect UTF-8 bytes
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int i = 0;
    while (i < input.length()) {
        if (i + 3 < input.length() && input.charAt(i) == '\\' && input.charAt(i + 1) == 'x') {
            // Found \xHH sequence
            String hex = input.substring(i + 2, i + 4); // Extract the hex digits
            try {
                int value = Integer.parseInt(hex, 16); // Parse the hex digits
                byteArrayOutputStream.write(value); // Write the byte to the output stream
                i += 4; // Skip past \xHH
            } catch (NumberFormatException e) {
                // If parsing fails, append the original sequence as-is
                byteArrayOutputStream.write(input.charAt(i));
                i++;
            }
        } else {
            // Regular character, append as a single byte
            byteArrayOutputStream.write(input.charAt(i));
            i++;
        }
    }
}

'Java' 카테고리의 다른 글

Java로 SMTP 메일 발송하기  (0) 2024.11.19
숫자 6자리 임시 비밀번호 만들기  (0) 2024.11.19
List<Map<String, Object>>에 item 추가하기  (1) 2024.11.12
hostname 정보 가져오기  (0) 2024.11.12
오늘 날짜 얻어 내기  (0) 2024.11.07