JavaScript的转换GUID字符串格式转换成Base64编码 [英] Javascript convert GUID in string format into Base64

查看:385
本文介绍了JavaScript的转换GUID字符串格式转换成Base64编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个客户端,JavaScript的上下文。我有一个 GUID 字符串格式 e8b75aff-3422-4529-8a6a-15b33e674f48 ,我需要它在的Base64 字符串 / 1q36CI0KUWKahWzPmdPSA == 如何转换呢?

感谢。


解决方案

\r
\r

//转换GUID字符串BASE-64在Javascript\r
//由Mark SEECOF,2012-03-31\r
\r
VAR hexlist ='0123456789ABCDEF';\r
VAR b64list ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /';\r
\r
// GUID字符串有四个破折号始终是MSB第一,\r
//但基64 GUID的靶系统字节序有所不同。\r
//小端系统中更为常见。设置乐==真\r
//当目标系统为小端(例如x86机器)。\r
//\r
功能guid_to_base64(克乐){\r
    变种S = g.replace(/ [^ 0-9A-F] / IG,'').toLowerCase();\r
    如果(s.length = 32!)返回'';\r
\r
    如果(文件)S = s.slice(6,8)+ s.slice(4,6)+ s.slice(2,4)+ s.slice(0,2)+\r
      s.slice(10,12)+ s.slice(8,10)+\r
      s.slice(14,16)+ s.slice(12,14)+\r
      s.slice(16);\r
    S + ='0';\r
\r
    变种一个,P,Q;\r
    变种R ='';\r
    变种I = 0;\r
    而(ⅰγ-33){\r
      一个=(hexlist.indexOf(s.charAt(ⅰ++))≤;&下; 8)|\r
        (hexlist.indexOf(s.charAt(ⅰ++))≤; 4;)|\r
        (hexlist.indexOf(s.charAt(ⅰ++)));\r
\r
      p值= A>> 6;\r
      Q = A和63;\r
\r
      R + = b64list.charAt(P)+ b64list.charAt(Q);\r
    }\r
    R + ='==';\r
\r
    返回ř;\r
  } // guid_to_base64()\r
\r
//编辑\r
功能tryConversion(){\r
  的document.getElementById(结果)。innerText属性= guid_to_base64(\r
    的document.getElementById(input_guid)。价值,\r
    的document.getElementById(cb_le)。检查\r
  );\r
}

\r

输入[类型=文本] {\r
  FONT-FAMILY:等宽;\r
  字体大小:12像素;\r
  宽度:270px;\r
}

\r

< D​​IV><标签=input_guid> GUID< /标签> <输入类型=文本MAXLENGTH =36ID =input_guidVALUE =83D95782-BDE4-466F-A490-46820D2B2CDC/>\r
< / DIV>\r
< D​​IV><标签=cb_le>小端<?/标签> <输入类型=复选框ID =cb_le检查=选中/>< / DIV>\r
<小时/>\r
< D​​IV><按钮的onclick =JavaScript的:tryConversion()>转换和LT; /按钮>< / DIV>\r
< D​​IV>结果:其中;跨度ID =结果>< / SPAN>< / DIV>

\r

\r
\r

I'm in a client-side, javascript context. I have a GUID in string format e8b75aff-3422-4529-8a6a-15b33e674f48 and I need it in aBase64 string /1q36CI0KUWKahWzPmdPSA== How do I convert it?

Thanks.

解决方案

// Convert GUID string to Base-64 in Javascript
// by Mark Seecof, 2012-03-31

var hexlist = '0123456789abcdef';
var b64list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

// GUID string with four dashes is always MSB first,
// but base-64 GUID's vary by target-system endian-ness.
// Little-endian systems are far more common.  Set le==true
// when target system is little-endian (e.g., x86 machine).
//
function guid_to_base64(g, le) {
    var s = g.replace(/[^0-9a-f]/ig, '').toLowerCase();
    if (s.length != 32) return '';

    if (le) s = s.slice(6, 8) + s.slice(4, 6) + s.slice(2, 4) + s.slice(0, 2) +
      s.slice(10, 12) + s.slice(8, 10) +
      s.slice(14, 16) + s.slice(12, 14) +
      s.slice(16);
    s += '0';

    var a, p, q;
    var r = '';
    var i = 0;
    while (i < 33) {
      a = (hexlist.indexOf(s.charAt(i++)) << 8) |
        (hexlist.indexOf(s.charAt(i++)) << 4) |
        (hexlist.indexOf(s.charAt(i++)));

      p = a >> 6;
      q = a & 63;

      r += b64list.charAt(p) + b64list.charAt(q);
    }
    r += '==';

    return r;
  } // guid_to_base64()

//EDIT
function tryConversion() {
  document.getElementById("result").innerText = guid_to_base64(
    document.getElementById("input_guid").value,
    document.getElementById("cb_le").checked
  );
}

input[type=text] {
  font-family: monospace;
  font-size: 12px;
  width: 270px;
}

<div><label for="input_guid">GUID</label> <input type="text" maxlength="36" id="input_guid" value="83D95782-BDE4-466F-A490-46820D2B2CDC" />
</div>
<div><label for="cb_le">Little-Endian?</label> <input type="checkbox" id="cb_le" checked="checked" /></div>
<hr />
<div><button onclick="javascript:tryConversion()">Convert</button></div>
<div>Result: <span id="result"></span></div>

这篇关于JavaScript的转换GUID字符串格式转换成Base64编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆