The first thing you want to do if you want a hex editor is to stop using strings: use
byte
values at all times - strings contain unicode characters which are of variable length, and do not have to be 8 bits.
Read your file as bytes, store it as bytes and convert it to ASCII values for display only when you need to - which is pretty simple:
byte[] bytes = ...
string s = System.Text.Encoding.ASCII.GetString(bytes);
It may well be worth your copying the area of the byte array you are interested in into a new short array before you call this (as it converts the whole array to a string). Do note that the values in the string are the unicode interpretation of the byte as an ASCII value, not ASCII values themselves, so generating a new binary file from the string will not necessarily give you the same file as you started with - hence the "keep it as a byte array" comment above.