Генерация 12-значного шестнадцатеричного числа в KSH - PullRequest
1 голос
/ 31 июля 2010

Мне нужно сгенерировать 12-значные шестнадцатеричные числа в KSH на Solaris

Спасибо

Ответы [ 4 ]

4 голосов
/ 31 июля 2010
#!/bin/ksh
set -A hex 0 1 2 3 4 5 6 7 8 9 A B C D E F
for i in {1..12}
do
   printf ${hex[$((RANDOM%16))]}
done
1 голос
/ 31 июля 2010

Начните с этой программы на Python, hex12.py.

hex12.py

#!/usr/bin/env python
import random
import hashlib
h= hashlib.sha1(str(random.random())).hexdigest()
print h[:12]

В вашей оболочке теперь вы можете использовать hex.py для создания 12 шестнадцатеричных цифр на стандартном выходе.

0 голосов
/ 28 сентября 2018

Поскольку переменная RANDOM генерирует 15-битное число (от 0 до 32767), вы можете объединить несколько значений RANDOM.

Вам понадобится 48-битное число, поскольку 12 шестнадцатеричных цифр равны 12 * 4 = 48 битам.

Или:

$ printf '%x\n' $(( ((RANDOM<<15|RANDOM)<<15|RANDOM)<<3|RANDOM%8 ))
9142467b46d3

Или:

$ printf '%x' $((RANDOM%4096)) $((RANDOM%4096)) $((RANDOM%4096)) $((RANDOM%4096)); echo
808878c21e19
0 голосов
/ 31 июля 2010

Попробуйте это:

DIGITS=`head -c 6 /dev/urandom | od -x | head -n 1 | sed -e 's/^0* //' -e 's/ //g'
...