Qbasicnews.com
Is this possible? Brute force conversion - Printable Version

+- Qbasicnews.com (http://qbasicnews.com/newforum)
+-- Forum: Qbasic "like" compilers/interpreters (http://qbasicnews.com/newforum/forum-5.html)
+--- Forum: FB Discussion & Programming Help (http://qbasicnews.com/newforum/forum-15.html)
+--- Thread: Is this possible? Brute force conversion (/thread-9875.html)



Is this possible? Brute force conversion - wallace - 01-20-2007

Cast doesn't do what I want it to do. I have a single precision float that I want to store in an array of integers. They are both 32 bits so it's possible. I want a way to convert 12.3423 into an integer and then back to 12.3423.

The binary representation of 12.3423 is 01000001010001010111101000010000 (IEEE 754) which is 1,095,072,272 in integer format.

Doing int = cast(single, sing) gives me a value of 12 for int.


Is this possible? Brute force conversion - stylin - 01-21-2007

This seems to work:

dim f as single = 12.3423
dim i as integer = *cast(integer ptr, @f)

print *cast(single ptr, @i) ' prints 12.3423


edit: wee, 420 posts..


Is this possible? Brute force conversion - TheAdventMaster - 01-21-2007

Quote:edit: wee, 420 posts..
grats.


Is this possible? Brute force conversion - wallace - 01-21-2007

i may be super drunk , but that is just transfering pointers, whic works fine, i actually awnaty to store that data in the array and not fjust a pointer to it,; is ther aa way to do that>


Is this possible? Brute force conversion - stylin - 01-21-2007

It works with arrays, too:

dim f as single = 12.3423
dim array(0) as integer = { *cast(integer ptr, @f) }
print *cast(single ptr, @array(0)) ' prints 12.3423

The reinterpretation of the raw data is what you want. It seems a direct cast from single to integer converts the value - that is, it truncates the decimal; C and C++ do the same thing. Casting the pointer type - the address of the data - from float pointer to integer pointer does not convert the value, it just reinterprets the floating point raw data as something else - the value does not change.


Is this possible Brute force conversion - D.slert - 10-23-2009

Is it even possible to have a NIC Card in the back of your PC and have a crossover cable running from the back of your xbox to the back of my pc and be able to ftp into evox. Or are my IPs just messed up.