banks and endians

BlitzMax Forums/BlitzMax Programming/banks and endians

deps(Posted 2006) [#1]
v1 and v2 is not equal if this code is executed on a mac:
local b:tbank = loadbank("littleendian::file.bin")
local v1:int = peekint( b, 0 )

local s:tstream = readfile("littleendian::file.bin")
local v2:int = readint( s )

v2 contains the correct value.
Is this the way it should behave? Was unable to find anything about it in the manual.
I know that loadbank cannot convert the data it loads, but it should at least set a flag or something so readint and friends converts the data.


Floyd(Posted 2006) [#2]
Testing on a PC I get this behaviour:

The value returned by ReadInt changes with the endianness.
LoadBank ignores bigendian/littleendian, as it must. PeekInt just returns 'raw data'.

That seems correct to me. Peek is a lower level function that Read.
It would just feel wrong to have Peek automatically change values based on endianness.


deps(Posted 2006) [#3]
It would just feel wrong to have Peek automatically change values based on endianness.

But what if I want to load a binary file in little endian format into a bank on a mac and read stuff? Like I want to do now? :)

I'm using streams now so this isn't a problem for me. Just wanted to report what I thought was a bug.


marksibly(Posted 2006) [#4]
Hi,

This is correct behaviour.

LoadBank uses the low level stream 'read' function, which is not affected by endianness.