diff --git a/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/ASCII_EBCDIC_Example.java b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/ASCII_EBCDIC_Example.java new file mode 100644 index 000000000000..3a155e3f2b55 --- /dev/null +++ b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/ASCII_EBCDIC_Example.java @@ -0,0 +1,12 @@ +import java.nio.charset.Charset; + +class Main { + public static void main(String[] args) { + // Example: EBCDIC bytes for "ABC" (in Cp037) + byte[] ebcdicBytes = new byte[] { (byte)0xC1, (byte)0xC2, (byte)0xC3 }; + + // Convert to String using EBCDIC Cp037 charset + String text = new String(ebcdicBytes, Charset.forName("Cp037")); + System.out.println(text); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/Alternative_approach.java b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/Alternative_approach.java new file mode 100644 index 000000000000..42354ec98bc3 --- /dev/null +++ b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/Alternative_approach.java @@ -0,0 +1,30 @@ +import java.io.*; +import java.nio.charset.*; + +public class EbcdicStreamConverter { + + public static void main(String[] args) { + try ( + InputStreamReader reader = new InputStreamReader( + new FileInputStream("input.ebc"), + Charset.forName("Cp037") + ); + OutputStreamWriter writer = new OutputStreamWriter( + new FileOutputStream("output.txt"), + StandardCharsets.US_ASCII + ) + ) { + char[] buffer = new char[1024]; + int length; + + while ((length = reader.read(buffer)) != -1) { + writer.write(buffer, 0, length); + } + + System.out.println("Conversion complete! See output.txt"); + + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/practical_example.java b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/practical_example.java new file mode 100644 index 000000000000..0e4e5f3a50c8 --- /dev/null +++ b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/practical_example.java @@ -0,0 +1,21 @@ +import java.io.*; +import java.nio.charset.*; + +public class EbcdicToAsciiExample { + + public static void main(String[] args) throws Exception { + // Step 1: Read raw EBCDIC bytes from file + FileInputStream fis = new FileInputStream("input.ebc"); + byte[] ebcdicData = fis.readAllBytes(); + fis.close(); + + // Step 2: Decode EBCDIC bytes to Unicode string + String unicodeText = new String(ebcdicData, Charset.forName("Cp037")); + + // Step 3: Encode Unicode string to ASCII bytes + byte[] asciiData = unicodeText.getBytes(StandardCharsets.US_ASCII); + + // Step 4: Print final ASCII string + System.out.println(new String(asciiData, StandardCharsets.US_ASCII)); + } +} diff --git a/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/step_by_step_conversion.java b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/step_by_step_conversion.java new file mode 100644 index 000000000000..5e58d12c16cd --- /dev/null +++ b/core-java-modules/core-java-string-conversions-4/EBCDIC_to_ASCII/step_by_step_conversion.java @@ -0,0 +1,15 @@ +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +class Main +{ + public static void main(String[] args) { + // Step 0: Example EBCDIC bytes ("HELLO" in Cp037) + byte[] ebcdicData = { (byte)0xC8, (byte)0x85, (byte)0x93, (byte)0x93, (byte)0x96 }; + // Step 1: Decode from EBCDIC (Cp037) to Unicode string + String unicodeText = new String(ebcdicData, Charset.forName("Cp037")); + // Step 2: Encode from Unicode string to ASCII bytes + byte[] asciiData = unicodeText.getBytes(StandardCharsets.US_ASCII); + // Step 3: Print final ASCII string + System.out.println(new String(asciiData, StandardCharsets.US_ASCII)); + } + +} \ No newline at end of file