HEX number grouping

Guys, I am looking for a small script which generates HEX sequence. Input to the script is starting hex number - Group ID and number of members in a group and total groups.

e.g: we are generating 2 groups with 4 Members each starting with hex number 036A. I should get o/p in following format.

Input: Starting HEX number - 036A, Number of groups - 2, Members in a Group- 4.

Output:
Group ID 036A, members;add members 036B:036D to group ID 036A
Group ID 036E, members;add members 036F:0371 to group ID 036E

You could do something like:

echo "036A" | awk '
{
  printf("Group ID %04X, members;add members %04X:%04X to group ID %04X\n", hex2dec($1) ,hex2dec($1)+1, hex2dec($1)+3, hex2dec($1))
  printf("Group ID %04X, members;add members %04X:%04X to group ID %04X\n", hex2dec($1)+4 ,hex2dec($1)+5, hex2dec($1)+7, hex2dec($1)+4)
}
function hex2dec(h,i,x,v){
  h=tolower(h);sub(/^0x/,"",h)
  for(i=1;i<=length(h);++i){
    x=index("0123456789abcdef",substr(h,i,1))
    v=(16*v)+x-1
  }
  return v
}'

Can we input Starting HEX number = 036A, Number of groups = 2, Members in a Group= 4.

echo "036A 2 4" | awk '
{
  for(i=0;i<$2;i++) {
    printf("Group ID %04X, members;add members %04X:%04X to group ID %04X\n", hex2dec($1)+i*$3 ,hex2dec($1)+i*$3+1, hex2dec($1)+i*$3+3, hex2dec($1)+i*$3)
  }
}
function hex2dec(h,i,x,v){
  h=tolower(h);sub(/^0x/,"",h)
  for(i=1;i<=length(h);++i){
    x=index("0123456789abcdef",substr(h,i,1))
    v=(16*v)+x-1
  }
  return v
}'
/export/home/e0007fc/work#sudo ./junk0
+ awk
{
  for(i=0;i<$2;i++) {
    printf("Group ID %04X, members;add members %04X:%04X to group ID %04X\n", hex2dec($1)+i*$3 ,hex2dec($1)+i*$3+1, hex2dec($1)+i*$3+3, hex2dec($1)+i*$3)
  }
}
function hex2dec(h,i,x,v){
  h=tolower(h);sub(/^0x/,"",h)
  for(i=1;i<=length(h);++i){
    x=index("0123456789abcdef",substr(h,i,1))
    v=(16*v)+x-1
  }
  return v
}
+ echo 036A 2 4
awk: syntax error near line 7
awk: bailing out near line 7

Use nawk or /usr/xpg4/bin/awk on Solaris.

1 Like