I’m trying to parse CPU node affinity+cache sibling info in Linyx sysfs.
I can get a string of bits, just for example:
0000111100001111
Now I need a function where I have a decimal number (e.g. 4 or 5) and I need to test whether the nth bit is set or not. So it would return true for 4 and false for 5. I could create a string by shifting 1 n number of times, but I’m not sure about the syntax, and is there an easier way? Also, there’s no limit on how long the string could be, so I want to avoid decimal <-> binary conversoins.
Assuming that you have the string of bits “0000111100001111” in
$str, if you do the precomputation step:you can then use vec like so:
so for example, this code
will output
Note that the offsets are zero-based, so if you want the first bit to be bit 1, you’ll need to add/subtract 1 yourself.