This is a discussion / support forum for the Hugo programming language by Kent Tessman. Hugo is a powerful programming language for making text games / interactive fiction with multimedia support.
I'm sure you already know all this, but here's what the manual says about negative numbers:
VALUE (i.e., INTEGER CONSTANT):
<value> <2>
A value may range from -32768 to 32767; negative numbers follow signed-value
16-bit convention by being x + 65536 where x is a negative number.
For example, the values 10 ($0A), 16384 ($4000), and -2 would be written
as:
$4B 0A 00
$4B 00 40
$4B FE FF ($FFFE = 65534 = -2 + 65536)
Does writing to file use a different type of encoding so something is lost in translation?
The issue is that what actually happens when writing numbers to a file doesn't follow that description, as is apparent when trying to read the value back. You get something different than what you wrote.
The engine writes two bytes per value to files, in little-endian format. Except that for negative numbers between -1 and -255 it writes the same bytes as for the positive numbers between 255 and 1.