Helps read/write and convert between legacy IBM System formats and .NET types. Includes IbmConverter class as well as BinaryReader & BinaryWriter extensions for EBCDIC string, Big Endian Int16, Big Endian Int32 and IBM System/360 single precision floating point format.
Issues welcome. Do not fold, spindle, or mutilate.
using System.IO;
using Unplugged.IbmBits;
using (var stream = File.OpenRead("punchcard.bin"))
using (var reader = new BinaryReader(stream))
{
string text = reader.ReadStringEbcdic(12);
float f = reader.ReadSingleIbm();
int i16 = reader.ReadInt16BigEndian();
int i32 = reader.ReadInt32BigEndian();
}
using (var stream = File.OpenWrite("punchcard.bin"))
using (var writer = new BinaryWriter(stream))
{
writer.WriteEbcdic("Hello, World");
writer.WriteIbmSingle(3.14f);
writer.WriteBigEndian((Int16) 13);
writer.WriteBigEndian((Int32) 54321);
}