Hey GordonRob,No problem mate ,I will try to explain a bit better.
Its all about how to extract the data from zbrush and why some methods are not so useful this days,this may get a bit boring and trivial for some people,so apologizes...

but i think its important:
Years ago, when 16/32 bits "float" image formats (like EXR) were not widely used, the way of storing data with more information than the tipical 8 bit (tga,jpg,etc...)was by using the 16 bit "Integer" format(like SGI16,"evil"TIF16 )
When we have 8 bits we have: 2^8 =256 or 0-255 range of integer values,and when we interpret this values to colors in an image we do so by saying 0= black 255=white.
16 bits Integer is just an extension of this, same process different range,as we now have a range of 2^16= 65536 values,again 0=black 65535= white, which is so much better when you need precision(like with displacement).
So back then we had to adapt or "convert" our displacement pure values to this image format to make it useable in our favorite 3D render.One way to do so was by normalizing the displacement amount and keep a max displacement factor.
Lets have a very simplified example,Imagine a plane geometry where you just displaced 2 values, one is a "pull" of 8.7 (+8.7) units and the other is a "push" of 3.5 (-3.5) ,the rest of the vertex are not touched (0).The problem is how do you store those values using an image format in an easy way that can be loaded later on in our render software.One solution was to normalize them, so if we know the maximum displacement is 8.7, its very easy for example just clamp the values to the range of (-8.7,8.7) divide by 8.7 (-1,1) halve it (-.5,.5) and add 0.5(0,1) .Now, if we multiply this normalized values by 65536 and get rid of any decimal, we have a fully interger 16 values that can be saved and loaded easily in our render of choice.
To get the correct displacement values in our render, we load the normalized values(0,1), the midpoint will always be 0.5,but we need to define the scale value or max displacement value for our model in our case (8.7) and of course our midpoint will be 0.5*maxValue,so we will need to shift by that amount (-0.5*8.7).
Now, lets do the same export from zbrush, but storing the values in a 32 bits "float" format like EXR,well we can just directly write 8.7, -3.5 and the rest will be 0.
We will load the image in our render and we should be able to just click render. Our scale will be 1 and offset 0 (remember we have stored the exact values)
The second workflow is so much easier and more important less confussing, thats why personally I would advise in adopting it.
In Octane,at the moment, is a bit different story, there is no need to normalize anything or get a proper scale as we can use EXR float images,but it doesnt like negative values,still all we need to do is add to the whole image a constant value, high enough to get rid of negative values and ofcourse smaller than the displacement bounds of the mesh and then offset in the displacement node.
Have a look to this link, even though it doesnt specifically talk about octane,it does better job in explaining this matter
http://www.cggallery.com/tutorials/displacement/
If you need any help with octane let me know,i could setup a very simple scene.
I hope it helps!