That sounds terrible
230K of memory overhead is perfectly fine. Imagine loading a 1024*1024 image, it will take 4MB of memory. We have gigabytes of RAM... is 230K really terrible??
The bonus you have when using a char is that it does bounds checking for you. If you'd just use Danny02's code, and you'd feed in x=-1, y=-2, z=5, there wouldn't be an error thrown, it would just result into unexpected behavior. So apart from the 1D<->3D convertion, you have to do your own bounds checking for x,y,z values.
Bounds checking and index calculations are all trivial, we say, but for a newbie, it's highly error prone, given that Danny02 got it wrong too (returned Y axis value is wrongly calculated), and I'd say one is better off with char, and swallow that 230K overhead.