Log In  

In what situations do you use these conversions?

hexnumber = '3xz'

--A
tonum(hexnumber,1)       : 768 (0x0300.0000)

--B
tonum("0x"..hexnumber,4) : 0 (0x0000.0000)

--C
tonum('0x'..hexnumber)   : -- NO VALUE --([nil])

Example
I want "nil" to be returned when I use a character as an identifier. Therefore, I use the "C" conversion.

hexstr = '108000789$'
hexval = TONORM(hexstr) -- Normalize the value [number boolian nil], otherwise it remains a string.
hextable = {}

if type(hexval) == 'string' then

 foreach(split(hexstr, 3), function(v)
  add(hextable, tonum('0x' .. v))
 end)

end

-- Handle hexadecimal conversions without being converted to numbers by normalization.
-- Only the value of number is stored in the hextable.
-- "$" is not stored.
P#90457 2022-02-24 10:36

hi there! I don’t fully follow what you’re trying to do.

in your example, hexnumber is strange because it contains a byte and a half, not an even number of hex digits.

pico8’s functions convert between number and string. tostr(142,0x1) gives "0x008e.0000", which can be cut with sub to get "008e" to store somewhere, then later tonum("008e",0x1) gives us back 142.

the trick with tonum("0x"..bytes) is not needed anymore thanks to the new flags you can pass to tonum. I don’t understand the $ sign or why your hex strings are not even.

hope this helps!

P#107591 2022-02-24 11:11

Hi @merwok
Thank you for your help!

I kind of regret why I went with this example! :P

> tostr(142,0x1) -> tonum("008e",0x1) -> 142

Yes, unless you have a specific reason, I think this method is simply sufficient.

However, this example was intended to store data in 12 bits, not in the delimited format of one byte.

hexstr = '108000789$' -- input

hextable = { 0x108 , 0x000 , 0x789 , nil } -- output

I wanted to show that we are using tonum("0x". .bytes), which has a different behavior.

P#107594 2022-02-24 12:26

ah! if you’re working with 12 bits and want to use tonum/tostr, I think you may have to add four empty bits or add a 0 to make it work!

P#107596 2022-02-24 13:07

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 12:39:11 | 0.017s | Q:14