## Feature #5520

closed### /bset suggestion for 16bits + 32bits numbers

0%

**Description**

Hello,

If its possible for AdiIRC to having some new switches that will treat a value above 255 as 16bits or 32bits number for little/big endian, this is going to help a lot as AdiIRC already having some extra properties for reading.

Description :

**-w** = word, 16 bits little endian**-nw** = word, 16 bits big endian**-l** = word, 32 bits little endian**-nl** = word, 32 bits big endian

OR

**-l16 -l32** = word, 16 or 32 bits little endian**-b16 -b32** = word, 16 or 32 bits big endian

Examples :

`//bset -w &a -1 256 | echo -ag $bvar(&a,1-) should produce 0 1`

`//bset -nw &a -1 256 | echo -ag $bvar(&a,1-) should produce 1 0`

`//bset -l &a -1 256 | echo -ag $bvar(&a,1-) should produce 0 1 0 0`

`//bset -nl &a -1 256 | echo -ag $bvar(&a,1-) should produce 0 0 1 0`

- Thanks!

#### Updated by Per Amundsen about 2 years ago

**Status**changed from*New*to*Rejected*

$bvar() already has ".word" ".nword" properties etc.

#### Updated by westor (GR) about 2 years ago

Sorry but i think you confused here, i suggesting something for **/bset** not **$bvar()** , or please explain me what you meant to use $bvar() ? i don't see that makes sense or maybe i miss something here.

- Thanks!

#### Updated by Sean Everett about 2 years ago

what westor is after is the ability to work in bit ranges. to say: Everything I'm passing is 16bit or 32bit. The end goal is to have a proper binary variable representation still in the native 8bit. (The ability to ADD/INSERT/APPEND a word/nword/long/nlong rather than have to convert it into high/low bits)

So like /bset <&var> <N> <value> [value value]

N represents the position, value is a range of 0-255

if we used a flag for 16bit, now "value" is of range 0-65535.

if we used a flag for 32bit, now "value" is of range 0-4294967295.

if we were to translate this from 16bit, we'd need the high/low (split 16bit into two 8bit values) also N would need to reflect this as well, so if N was 2, now we gotta think it's 8bit, so the "position" would be 3 (because our 1st 16bit value is position 1-2, our 2nd 16bit position would be 3-4, etc...) If 32bit, everything doubles, now we need 4 8bit values to represent "value", and 4 positions to store these values...

N can have negative values, -1,-2,-3 etc.. these too need translated to positions in 8bit, this just specifies insert this data N values from the end.

here's a scripted version of the requested functionality:

Nbset { if ($1 == -w || $1 == -l16) { var %bits = 16 } elseif ($1 == -nw || $1 == -b16) { var %bits = -16 } elseif ($1 == -l || $1 == -l32) { var %bits = 32 } elseif ($1 == -nl || $1 == -b32) { var %bits = -32 } if (%bits) { if ($abs(%bits) == 16) { if (%bits < 0) { bset $2 $iif($3 < 0,$max(1,$calc($bvar($2,0) + $3 * 2 + 1)),$calc(($3 - 1) * 2 + 1)) $regsubex($4-,/(\d+)/g,$calc(\t // 256) $calc(\t % 256)) } else { bset $2 $iif($3 < 0,$max(1,$calc($bvar($2,0) + $3 * 2 + 1)),$calc(($3 - 1) * 2 + 1)) $regsubex($4-,/(\d+)/g,$calc(\t % 256) $calc(\t // 256)) } } elseif ($abs(%bits) == 32) { if (%bits < 0) { bset $2 $iif($3 < 0,$max(1,$calc($bvar($2,0) + $3 * 4 + 1)),$calc(($3 - 1) * 4 + 1)) $regsubex($4-,/(\d+)/g,$calc($and(\t,4278190080) / 16777216) $calc($and(\t,16711680) / 65536) $calc($and(\t,65280) / 256) $and(\t,255)) } else { bset $2 $iif($3 < 0,$max(1,$calc($bvar($2,0) + $3 * 4 + 1)),$calc(($3 - 1) * 4 + 1)) $regsubex($4-,/(\d+)/g,$and(\t,255) $calc($and(\t,65280) / 256) $calc($and(\t,16711680) / 65536) $calc($and(\t,4278190080) / 16777216)) } } } else { bset $1- } } //nbset -w &a -1 256 | echo -a $bvar(&a,1-) is: $bvar(&a,1).word 0 1 is: 256 //nbset -nw &a -1 256 | echo -a $bvar(&a,1-) is: $bvar(&a,1).nword 1 0 is: 256 //nbset -l &a -1 256 | echo -a $bvar(&a,1-) is: $bvar(&a,1).long 0 1 0 0 is: 256 //nbset -nl &a -1 256 | echo -a $bvar(&a,1-) is: $bvar(&a,1).nlong 0 0 1 0 is: 256

#### Updated by Oui Ouims about 2 years ago

Mistakes can be made, but more than a week has passed, this suggestions was completely misread by you kr0n and rejected with completely invalid reasons, it has nothing to do with $bvar, can this suggestion's status be changed back to open??