Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::GeorgeS's Tools

Development::GeorgeS's Tools A forum just for GeorgeS's tools

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #11  
Old 05-24-2009, 12:08 AM
GeorgeS
Forum Guide
 
Join Date: Sep 2003
Location: California
Posts: 1,474
Default

So I'm still working on the 4 byte Hex to float. I am trying to figure out if the format used is little endian byte order - AABBCCDD = DDCCBBAA .
Since the location of the toon is stored as a float, I need to convert the 4x8 bits (32 bits) to float..., but the byte order is important

edit
some progress. Looks like little endian format - low byte to hi byte order AABBCCDD = DDCCBBAA
Thus a 4 hex byte of '00 00 C7 41' decodes to '24.875' if my code is good.

Code:
'/*4700*/    float               y;                  // Player y position
'/*4704*/    float               x;                  // Player x position
'/*4708*/    float               z;                  // Player z position
'/*4712*/    float               heading;            // Direction player is facing

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function Hex2Float(ByVal tmpHex As String) As Single
Dim TmpSng As Single
Dim tmpLng As Long
tmpLng = CLng("&H" & tmpHex)
Call CopyMemory(ByVal VarPtr(TmpSng), ByVal VarPtr(tmpLng), 4)
Hex2Float = TmpSng
End Function
..and my float to hex (32bits) converter
Code:
Public Function Float2Hex(ByVal TmpFloat As Single) As String
Dim TmpBytes(0 To 3) As Byte
Dim TmpSng As Single
Dim tmpStr As String
Dim X As Long
TmpSng = TmpFloat
Call CopyMemory(ByVal VarPtr(TmpBytes(0)), ByVal VarPtr(TmpSng), 4)
For X = 3 To 0 Step -1
If Len(HEX(TmpBytes(X))) = 1 Then
tmpStr = tmpStr & "0" & HEX(TmpBytes(X))
Else: tmpStr = tmpStr & HEX(TmpBytes(X))
End If
Next X
Float2Hex = tmpStr
End Function

GeorgeS
__________________
Your source for EQ database tools
Toolshop is open for business


http://www.georgestools.chrsschb.com//

Last edited by GeorgeS; 05-24-2009 at 08:38 AM..
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 03:06 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3