@@ -208,35 +208,54 @@ result = NAVStringScreamKebabCase('hello world') // Returns 'HELLO-WORLD'
208208
209209``` netlinx
210210// Parse unsigned integer (0-65535)
211+ // Supports decimal, hexadecimal (0x or $), binary (0b), and octal (0o)
211212stack_var integer value
212213stack_var char success
213214success = NAVParseInteger('12345', value) // Returns true, value = 12345
215+ success = NAVParseInteger('0xFF', value) // Returns true, value = 255 (hex)
216+ success = NAVParseInteger('$FFFF', value) // Returns true, value = 65535 (hex with $)
217+ success = NAVParseInteger('0b1111', value) // Returns true, value = 15 (binary)
218+ success = NAVParseInteger('0o777', value) // Returns true, value = 511 (octal)
214219success = NAVParseInteger('99999', value) // Returns false (out of range)
215220success = NAVParseInteger('-100', value) // Returns false (negative)
216221success = NAVParseInteger('Volume=50', value) // Returns true, value = 50 (extracts first number)
217222success = NAVParseInteger(' 42 99 ', value) // Returns true, value = 42 (stops at space)
218223
219224// Parse signed integer (-32768 to 32767)
225+ // Supports decimal, hexadecimal (0x or $), binary (0b), and octal (0o)
220226stack_var sinteger svalue
221227success = NAVParseSignedInteger('-12345', svalue) // Returns true, svalue = -12345
228+ success = NAVParseSignedInteger('0x7FFF', svalue) // Returns true, svalue = 32767 (max)
229+ success = NAVParseSignedInteger('-0x8000', svalue) // Returns true, svalue = -32768 (min)
230+ success = NAVParseSignedInteger('0b1010', svalue) // Returns true, svalue = 10 (binary)
231+ success = NAVParseSignedInteger('-0o77', svalue) // Returns true, svalue = -63 (octal)
222232success = NAVParseSignedInteger('50000', svalue) // Returns false (out of range)
223233success = NAVParseSignedInteger('Offset=-100', svalue) // Returns true, svalue = -100
224234success = NAVParseSignedInteger(' -10 20 ', svalue) // Returns true, svalue = -10
225235
226236// Parse unsigned long (0-4294967295)
237+ // Supports decimal, hexadecimal (0x or $), binary (0b), and octal (0o)
227238stack_var long lvalue
228239success = NAVParseLong('1234567890', lvalue) // Returns true, lvalue = 1234567890
229240success = NAVParseLong('4294967295', lvalue) // Returns true (max LONG value)
241+ success = NAVParseLong('0xFFFFFFFF', lvalue) // Returns true, lvalue = 4294967295 (hex)
242+ success = NAVParseLong('0b11111111', lvalue) // Returns true, lvalue = 255 (binary)
243+ success = NAVParseLong('0o7777', lvalue) // Returns true, lvalue = 4095 (octal)
230244success = NAVParseLong('5000000000', lvalue) // Returns false (overflow)
231245success = NAVParseLong('-1000', lvalue) // Returns false (negative)
232246success = NAVParseLong(' 100 200 ', lvalue) // Returns true, lvalue = 100
233247
234248// Parse signed long (-2147483648 to 2147483647)
249+ // Supports decimal, hexadecimal (0x or $), binary (0b), and octal (0o)
235250stack_var slong slvalue
236251success = NAVParseSignedLong('-1234567890', slvalue) // Returns true, slvalue = -1234567890
237252success = NAVParseSignedLong('2147483647', slvalue) // Returns true (max SLONG)
253+ success = NAVParseSignedLong('0x7FFFFFFF', slvalue) // Returns true, slvalue = 2147483647 (hex)
254+ success = NAVParseSignedLong('-0x80000000', slvalue) // Returns true, slvalue = -2147483648 (min)
255+ success = NAVParseSignedLong('0b11111111', slvalue) // Returns true, slvalue = 255 (binary)
256+ success = NAVParseSignedLong('-0o777', slvalue) // Returns true, slvalue = -511 (octal)
238257success = NAVParseSignedLong('3000000000', slvalue) // Returns false (overflow)
239- success = NAVParseSignedLong('xyz-123', slvalue) // Returns true, slvalue = -123 (extracts number)
258+ success = NAVParseSignedLong('xyz-123', slvalue) // Returns true, slvalue = -123 (extracts number)
240259success = NAVParseSignedLong(' -100 200 ', slvalue) // Returns true, slvalue = -100
241260
242261// Parse floating-point number
@@ -267,9 +286,13 @@ success = NAVParseBoolean('', bvalue) // Returns false (empty string)
267286- Parsing stops at the first space or non-digit character after the number (matching ATOI/ATOF behavior)
268287- Example: ` ' 10 20 ' ` parses as ` 10 ` , not ` 20 ` or ` 1020 `
269288- The functions validate ranges and return ` false ` if the value is out of bounds
270- - ` NAVParseInteger ` and ` NAVParseSignedInteger ` use ATOI internally
271- - ` NAVParseLong ` and ` NAVParseSignedLong ` use manual digit-by-digit parsing for full range support and overflow detection
272- - ` NAVParseFloat ` uses ATOF internally
289+ - ** Multi-base Support** : ` NAVParseInteger ` , ` NAVParseSignedInteger ` , ` NAVParseLong ` , and ` NAVParseSignedLong ` automatically detect number bases:
290+ - ** Hexadecimal** : ` 0x ` or ` 0X ` prefix (e.g., ` '0xFF' ` , ` '0x1A2B' ` ) or ` $ ` prefix (e.g., ` '$FF' ` , ` '$1A2B' ` )
291+ - ** Binary** : ` 0b ` or ` 0B ` prefix (e.g., ` '0b1010' ` , ` '0b11111111' ` )
292+ - ** Octal** : ` 0o ` or ` 0O ` prefix (e.g., ` '0o777' ` , ` '0o123' ` )
293+ - ** Decimal** : No prefix (e.g., ` '123' ` , ` '-456' ` )
294+ - ` NAVParseLong ` and ` NAVParseSignedLong ` use manual digit-by-digit parsing for full range support and precise overflow detection
295+ - ` NAVParseFloat ` uses ATOF internally and only supports decimal notation
273296- ` NAVParseBoolean ` performs case-insensitive matching of valid boolean strings:
274297 - ** True values** : ` '1' ` , ` 'true' ` , ` 'yes' ` , ` 'on' `
275298 - ** False values** : ` '0' ` , ` 'false' ` , ` 'no' ` , ` 'off' `
@@ -392,6 +415,23 @@ if (success) {
392415 send_command dvAudioDevice, "'VOLUME-', itoa(volume)"
393416}
394417
418+ // Parse hexadecimal color values
419+ stack_var char colorStr[10]
420+ stack_var integer red, green, blue
421+
422+ colorStr = '0xFF'
423+ success = NAVParseInteger(colorStr, red) // red = 255
424+
425+ colorStr = '$A5'
426+ success = NAVParseInteger(colorStr, green) // green = 165
427+
428+ // Parse binary flags
429+ stack_var char flagsStr[20]
430+ stack_var integer flags
431+
432+ flagsStr = '0b11010110'
433+ success = NAVParseInteger(flagsStr, flags) // flags = 214
434+
395435// Parse temperature with negative values
396436stack_var char tempStr[20]
397437stack_var sinteger temperature
@@ -402,6 +442,10 @@ if (success) {
402442 // temperature = -15, valid range -32768 to 32767
403443}
404444
445+ // Parse hex values with sign
446+ stack_var sinteger signedHex
447+ success = NAVParseSignedInteger('-0x10', signedHex) // signedHex = -16
448+
405449// Parse large numbers like timestamps
406450stack_var char timestampStr[20]
407451stack_var long timestamp
0 commit comments