Hexiwin Help

Introduction

Hexiwin is a Windows 32/64 utility for dumping the byte values of any file to Hexadecimal and ASCII format. You can view, edit, or
export the opened files hex/ascii values. I built this program to teach myself Windowsprogramming in 1998. I just resently have been
trying to bring Hexiwin up to date from it's Windows 95/98/XP days, so it will work properly with windows 7/8/10/11. Hexiwin at this time
can only handle 1GB files for the 32bit version, and 2GB files for the 64bit version. I am working on upgrading the way Hexiwin 32/64 memory
maps files, so to be able to handle larger files, and I also plan on adding unicode support, and to use the more modern call for dialog boxes.

To explain what you'll see when you dump a file to screen is an example below.

00000000: 4D5A 9000 0300 0000 0400 0000 FFFF 0000 MZ..............

Above are the first 16 bytes of the hexiwin program. The first 8 digits represent the byte address within the program, and it is: 00000000, so
this is the very beginning of the file. The following numbers: 4D5A 9000 0300 0000 0400 0000 FFFF 0000 are the hexadecimal representations
of bytes 0-15. They are grouped in 2 bytes, or a word. These hex numbers represent instuctions that the processor understands, or data in the
program like numbers, characters, or strings. The last set of sixteen characters: MZ.............. are the ascii representations of bytes 0-15.

Menu Commands

Well there aren't many menu commands to worry about with this program, because I wanted to keep it simple, but useful.
The only drop down menus are File, Search, and Help. Below is an explanation of the commands on the drop down menus.

File
1. Open -- Open any readable file to be dumped in hex to the screen.
2. Save -- Save the opened file with it's present name and extension.
3. SaveAs -- Save the opened file with a different name or extension.
4. ExportAs -- Save the opened file to a text file for later viewing. Warning! If you export as a txt or doc file the exported file will be about 4 times the size of the original file.
5. Exit -- Exit the program.

Search
1. Find -- Search for hex or ascii values in the opened file. You can search for hex or ascii values in the up or down directions. Ascii string searches can be case sensitive or non-case sensitive.
2. Goto -- Go to the specified offset in the opened file. The values can be either Hexadecimal or Decimal.

Help
1. Contents -- View this HTML help file contents.
2. About -- Just a little dialog box with some info about the program.

Hexadecimal Info

Hexadecimal is a base 16 number system. The number system we use in everyday life is the decimal, which is a base 10 number system that
has 10 digits 0-9, whereas hexadecimal has 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. The computer works with the binary number system,
which is a base 2 number system that has 2 digits 0, 1. The reason the computer works with only 2 digits is because these 2 digits represent
a transistors status, 0 being an off state, and 1 being an on state. The computer really doesn't use these 0's and 1's, all it knows about is on or off.
The 0's and 1's are for us humans so we can get a grasp of what is going on.

A large number in binary is about as long as your arm, for example the decimal number 1,000,000 in binary is 11110100001001000000, but in
hexadecimal it is F4240, so with hexadecimal us humans can represent large numbers with less digits.

When you dump the hex values of a file with a program like hexiwin you are dumping the hexadecimal representation of each byte of that file.
A byte can have a number from 0-255, because the the highest number a byte can hold is 255. In binary 255 is 11111111 meaning all the
transistors at that bytes location are in the on state. When you dump a file to hex each byte is translated from binary to hexadecimal, so each
byte will have a hex value from 0-FF. These hex values represent either code or data, code being instructions meant for the processor, and telling
it to carry out operations with the data of the file. The data can be variables, strings of words, or any data used by the program. If you made a
program to add 2 to a variable named num, then the instructions telling the proccessor to add 2 to the variable named num would be code and
the variable num itself would be data.

These hex values you see when you open an executable program with a hex editor is called machine language. Machine language is the actual language
that the computer understands. You can write programs in machine language, but it's so hard that you'd have to be a programming mastermind
and a glutton for punishment, but I'm sure there are some people out there doing it. The next step up from machine language is assembly language.
Assembly language is more human friendly than machine language, but it's close enough to machine language to where you can learn how the computer
is actually doing the amazing things it does. Assembly is hard to learn, but to really understand the computer you have to understand some assembly. I
made Hexiwin with the C programming language, which is a lot easier to do than assembly. I'd like to make Hexiwin in assembly, just to see if I could do it,
but that would be a monumental task for me.

Please report bugs to: wjack@wjack.com