RGB表記10進数⇔16進数相互変換ブックマークレット

先日書いたブックマークレットを拡張しました。
入力を自動判別して16進数から10進数への変換もします。

  • 改行あり
javascript:(function(a,f){
  if(/^#?[0-9a-f]{3}$/i.test(a[0])
  && a[1] === void 0
  && a[2] === void 0)
     a[0] = a[0].replace(/[^#]/g,'$&$&');
  /^#?([0-9a-f]{6})$/i.test(a[0])
  ? prompt( 'RGB Decimal',
            f(0) + ', ' + f(2) + ', ' + f(4) )
  : prompt( 'RGB HEX',
            '#' + ( 1    << 24
                  | a[0] << 16
                  | a[1] <<  8
                  | a[2] ).toString(16).slice(1) );
})(prompt('RGB ?').split(/\s*[,\s]\s*/),
   function(n){return parseInt(RegExp.$1.slice(n,n+2),16);});
  • 改行なし
javascript:(function(a,f){if(/^#?[0-9a-f]{3}$/i.test(a[0])&&a[1]===void 0&&a[2]===void 0)a[0]=a[0].replace(/[^#]/g,'$&$&');/^#?([0-9a-f]{6})$/i.test(a[0])?prompt('RGB Decimal',f(0)+', '+f(2)+', '+f(4)):prompt('RGB HEX','#'+(1<<24|a[0]<<16|a[1]<<8|a[2]).toString(16).slice(1) );})(prompt('RGB ?').split(/\s*[,\s]\s*/),function(n){return parseInt(RegExp.$1.slice(n,n+2),16);});