/*
Arduino EBCDIC Demonstration
Converts a limited set of ASCII characters
(A-Z, 0-9, and space) to EBCDIC code points.
*/
byte asciiToEBCDIC(char c)
{
// Space
if (c == ' ')
return 0x40;
// Digits 0-9
if (c >= '0' && c <= '9')
return 0xF0 + (c - '0');
// Uppercase letters A-I
if (c >= 'A' && c <= 'I')
return 0xC1 + (c - 'A');
// Uppercase letters J-R
if (c >= 'J' && c <= 'R')
return 0xD1 + (c - 'J');
// Uppercase letters S-Z
if (c >= 'S' && c <= 'Z')
return 0xE2 + (c - 'S');
return 0x00; // unsupported character
}
void setup()
{
Serial.begin(9600);
String text = "HELLO 123";
Serial.println("ASCII -> EBCDIC");
for (int i = 0; i < text.length(); i++)
{
char c = text[i];
byte ebcdic = asciiToEBCDIC(c);
Serial.print(c);
Serial.print(" -> 0x");
if (ebcdic < 16)
Serial.print('0');
Serial.println(ebcdic, HEX);
}
}
void loop()
{
// Nothing to do
}