关于C#中数字字符串格式化的说明

一、标准数字格式字符串:
标准数字格式字符串用于格式化通用数值类型。该数字格式字符串采用Axx的形式,其中A是称为格式说明符的字母型字符,xx是称为精度说明符的可选整数。精度说明符的范围从0到99,并且影响结果中的位数。任何包含一个以上字母字符(包括空白)的数字格式字符串都被解释为自定义数字格式字符串。
所有数字类型的ToString方法的某些重载支持标准数字格式字符串。例如,可将数字格式字符串提供给ToString(String)类型的ToString(String, IFormatProvider)方法和Int32方法。.NET Framework复合格式化功能也支持标准数字格式字符串,该功能由Write和WriteLine类的某些Console和StreamWriter方法、String.Format方法以及StringBuilder.AppendFormat方法使用。
以下列出支持的标准数字格式说明符并显示由每个格式说明符产生的示例输出:

“C”或”c”
名称:Currency。
结果:货币值。
支持类型:所有数值类型。
精度说明符:小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
123.456 (“C”, en-US) -> $123.46
123.456 (“C”, fr-FR) -> 123,46 €
123.456 (“C”, ja-JP) -> ¥123
-123.456 (“C3”, en-US) -> ($123.456)
-123.456 (“C3”, fr-FR) -> -123,456 €
-123.456 (“C3”, ja-JP) -> -¥123.456

“D”或”d”
名称:Decimal。
结果:整型数字,负号可选。
支持类型:仅整型。
精度说明符:最小位数。
默认值精度说明符:所需的最小位数。
示例:
1234 (“D”) -> 1234
-1234 (“D6”) -> -001234

“E”或”e”
名称:指数(科学型)。
结果:指数记数法。
支持类型:所有数值类型。
精度说明符:小数位数。
默认值精度说明符:6。
示例:
1052.0329112756 (“E”, en-US) -> 1.052033E+003
1052.0329112756 (“e”, fr-FR) -> 1,052033e+003
-1052.0329112756 (“e2”, en-US) -> -1.05e+003
-1052.0329112756 (“E2”, fr_FR) -> -1,05E+003

“F”或”f”
名称:定点。
结果:整数和小数,负号可选。
支持类型:所有数值类型。
精度说明符:小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
1234.567 (“F”, en-US) -> 1234.57
1234.567 (“F”, de-DE) -> 1234,57
1234 (“F1”, en-US) -> 1234.0
1234 (“F1”, de-DE) -> 1234,0
-1234.56 (“F4”, en-US) -> -1234.5600
-1234.56 (“F4”, de-DE) -> -1234,5600

“G”或”g”
名称:常规。
结果:最紧凑的定点表示法或科学记数法。
支持类型:所有数值类型。
精度说明符:有效位数。
默认值精度说明符:取决于数值类型。
示例:
-123.456 (“G”, en-US) -> -123.456
123.456 (“G”, sv-SE) -> -123,456
123.4546 (“G4”, en-US) -> 123.5
123.4546 (“G4”, sv-SE) -> 123,5
-1.234567890e-25 (“G”, en-US) -> -1.23456789E-25
-1.234567890e-25 (“G”, sv-SE) -> -1,23456789E-25

“N”或”n”
名称:Number。
结果:整数和小数、组分隔符和小数分隔符,负号可选。
支持类型:所有数值类型。
精度说明符:所需的小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
1234.567 (“N”, en-US) -> 1,234.57
1234.567 (“N”, ru-RU) -> 1 234,57
1234 (“N”, en-US) -> 1,234.0
1234 (“N”, ru-RU) -> 1 234,0
-1234.56 (“N”, en-US) -> -1,234.560
-1234.56 (“N”, ru-RU) -> -1 234,560

“P”或”p”
名称:百分比。
结果:乘以100并显示百分比符号的数字。
支持类型:所有数值类型。
精度说明符:所需的小数位数。
默认值精度说明符:由System.Globalization.NumberFormatInfo定义。
示例:
1 (“P”, en-US) -> 100.00 %
1 (“P”, fr-FR) -> 100,00 %
-0.39678 (“P1”, en-US) -> -39.7 %
-0.39678 (“P1”, fr-FR) -> -39,7 %

“R”或”r”
名称:往返过程。
结果:可以往返至相同数字的字符串。
支持类型:Single、Double和BigInteger。
精度说明符:忽略。
示例:
123456789.12345678 (“R”) -> 123456789.12345678
-1234567890.12345678 (“R”) -> -1234567890.1234567

“X”或”x”
名称:十六进制。
结果:十六进制字符串。
支持类型:仅整型。
精度说明符:结果字符串中的位数。
示例:
255 (“X”) -> FF
-1 (“x”) -> ff
255 (“x4”) -> 00ff
-1 (“X4”) -> 00FF

任何其他单个字符
说明:未知说明符,在运行时引发FormatException。

二、自定义数字格式字符串:
自定义数字格式字符串由一个或多个自定义数字说明符组成,用于定义设置数值数据格式的方式。自定义数字格式字符串是任何不属于标准数字格式字符串的格式字符串。
所有数字类型的ToString方法的某些重载支持自定义数字格式字符串。例如,可将数字格式字符串提供给Int32类型的ToString(String)方法和ToString(String, IFormatProvider)方法。.NET Framework复合格式化功能也支持自定义数字格式字符串,该功能由Console和StreamWriter类的某些Write和WriteLine方法、String.Format方法以及StringBuilder.AppendFormat方法使用。
以下列出支持的自定义数字格式说明符并显示由每个格式说明符产生的示例输出:

“0”
说明:零占位符,用对应的数字(如果存在)替换零;否则,将在结果字符串中显示零。
示例:
1234.5678 (“00000”) -> 01235
0.45678 (“0.00”, en-US) -> 0.46
0.45678 (“0.00”, fr-FR) -> 0,46

“#”
说明:数字占位符,用对应的数字(如果存在)替换英镑标记;否则,不会在结果字符串中显示任何数字。
示例:
1234.5678 (“#####”) -> 1235
0.45678 (“#.##”, en-US) -> .46
0.45678 (“#.##”, fr-FR) -> ,46

“.”
说明:小数点,确定小数点分隔符在结果字符串中的位置。
示例:
0.45678 (“0.00”, en-US) -> 0.46
0.45678 (“0.00”, fr-FR) -> 0,46

“,”
说明:组分隔符和数字比例换算,用作组分隔符和数字比例换算说明符。作为组分隔符时,它在各个组之间插入本地化的组分隔符字符。作为数字比例换算说明符,对于每个指定的逗号,它将数字除以1000。
组分隔符说明符示例:
2147483647 (“##,#”, en-US) -> 2,147,483,647
2147483647 (“##,#”, es-ES) -> 2.147.483.647
比例换算说明符示例:
2147483647 (“#,#,,”, en-US) -> 2,147
2147483647 (“#,#,,”, es-ES) -> 2.147

“%”
说明:百分比占位符,将数字乘以100,并在结果字符串中插入本地化的百分比符号。
示例:
0.3697 (“%#0.00”, en-US) -> %36.97
0.3697 (“%#0.00”, el-GR) -> %36,97
0.3697 (“##.0 %”, en-US) -> 37.0 %
0.3697 (“##.0 %”, el-GR) -> 37,0 %

“‰”
说明:千分比占位符,将数字乘以1000,并在结果字符串中插入本地化的千分比符号。
示例:
0.03697 (“#0.00‰”, en-US) -> 36.97‰
0.03697 (“#0.00‰”, ru-RU) -> 36,97‰

“E0″、”E+0″、”E-0″、”e0″、”e+0″、”e-0”
说明:指数表示法,如果后跟至少一个0(零),则使用指数表示法设置结果格式。”E”或”e”指示指数符号在结果字符串中是大写还是小写。跟在”E”或”e”字符后面的零的数目确定指数中的最小位数。加号(+)指示符号字符总是置于指数前面。减号(-)指示符号字符仅置于负指数前面。
示例:
987654 (“#0.0e0”) -> 98.8e4
1503.92311 (“0.0##e+00”) -> 1.504e+03
1.8901385E-16 (“0.0e+00”) -> 1.9e-16

“\”
说明:转义符,使下一个字符被解释为文本而不是自定义格式说明符。
示例:
987654 (“\###00\#”) -> #987654#

“;”
说明:部分分隔符,通过分隔格式字符串定义正数、负数和零各部分。
示例:
12.345 (“#0.0#;(#0.0#);-\0-“) -> 12.35
0 (“#0.0#;(#0.0#);-\0-“) -> -0-
-12.345 (“#0.0#;(#0.0#);-\0-“) -> (12.35)
12.345 (“#0.0#;(#0.0#)”) -> 12.35
0 (“#0.0#;(#0.0#)”) -> 0.0
-12.345 (“#0.0#;(#0.0#)”) -> (12.35)

‘字符’或”字符串”
说明:文本字符串分隔符,指示应复制到未更改的结果字符串的封闭字符。
示例:
68 (“# ‘ degrees'”) -> 68 degrees
68 (“# ‘ degrees'”) -> 68 degrees

所有其他字符
说明:字符将复制到未更改的结果字符串。
示例:
68 (“# °”) -> 68 °

更多信息请参阅:标准数字格式字符串自定义数字格式字符串

关于C#中GUID字符串格式化的说明

在C#编程中,GUID是比较常用的,我们常常用它作为一个全球唯一标识的UUID值,其中最常用的是Guid.ToString方法:

// 获取GUID的格式化字符串作为唯一ID
string id = Guid.NewGuid().ToString();

Guid.ToString方法的作用是根据所提供的格式说明符,返回此Guid实例值的十六进制字符串表示形式。方法位于程序集 mscorlib(mscorlib.dll)命名空间System中。

一、语法定义:

/// <summary>
/// 根据所提供的格式说明符,返回此GUID实例值的字符串表示形式
/// </summary>
/// <param name="format">格式说明符</param>
/// <returns>返回GUID字符串</returns>
public string ToString(string format);

二、参数说明:
format:一个单格式说明符,它指示如何格式化此GUID的值。format参数可以是”N”、”D”、”B”、”P”或”X”。如果format为null或空字符串(””),则使用”D”。
以下列出接受的格式说明符format的可选参数。其中“0”表示一个字符,连字符(“-”),大括号(“{”,“}”),括号(“(”,“)”):

“N”:32位字符,例00000000000000000000000000000000

“D”:由连字符分隔的32+4位字符,例00000000-0000-0000-0000-000000000000

“B”:由连字符,括在大括号分隔的32+4+2位字符,例{00000000-0000-0000-0000-000000000000}

“P”:由括在括号中的连字符分隔的32+4+2位数字,例(00000000-0000-0000-0000-000000000000)

“X”:四个十六进制值括在大括号,其中第四个值是也括在大括号的八个十六进制值的子集,例{0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}

其中十六进制字符a到f是小写在返回的字符串中的,若要将它们转换成大写,可以对返回的字符串调用String.ToUpper方法。

三、调用示例:

string guid = Guid.NewGuid().ToString();
string nGuid = Guid.NewGuid().ToString("N");
string dGuid = Guid.NewGuid().ToString("D");
string bGuid = Guid.NewGuid().ToString("B");
string pGuid = Guid.NewGuid().ToString("P");
string xGuid = Guid.NewGuid().ToString("X");

更多信息请参阅:Guid.ToString 方法 (String) (System)

关于编程生成UUID字符串的说明

一、在C#中生成UUID字符串:

// 创建GUID对象,通过GUID获取UUID
Guid guid = Guid.NewGuid();
// 返回UUID字符串
return guid.ToString();

二、在Java中生成UUID字符串:

// 创建UUID对象
UUID uuid = UUID.randomUUID();
// 返回UUID字符串
return uuid.toString();

三、在PHP中生成UUID字符串:

// 生成唯一标识字符串
$ids = strtolower ( md5 ( uniqid ( mt_rand (), true ) ) );
// 定义分隔符“-”
$hyphen = chr ( 45 );
// 构造UUID字符串
$uuid = substr ( $ids, 0, 8 );
$uuid .= $hyphen . substr ( $ids, 8, 4 );
$uuid .= $hyphen . substr ( $ids, 12, 4 );
$uuid .= $hyphen . substr ( $ids, 16, 4 );
$uuid .= $hyphen . substr ( $ids, 20, 12 );
// 返回UUID字符串
return $uuid;

四、在JavaScript中生成UUID字符串:

// 定义字符数组
var ids = [];
// 生成唯一标识字符数组
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
    ids[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
ids[14] = "4";
ids[19] = hexDigits.substr((ids[19] & 0x3) | 0x8, 1);
// 定义分隔符“-”
ids[8] = ids[13] = ids[18] = ids[23] = "-";
// 构造UUID字符串
var uuid = ids.join("");
// 返回UUID字符串
return uuid;

更多信息请参阅:UUID_百度百科

关于C#中转换绝对路径和相对路径的说明

一、将绝对路径转换成相对路径:

// 需要转换的绝对路径
string targetPath = "C:/test.txt";
// 相对路径对应的基准绝对路径
string sourcePath = Application.ExecutablePath;
// 构造Uri对象
Uri sourceUri = new Uri(sourcePath);
Uri targetUri = new Uri(targetPath);
// 获取绝对路径对应的相对路径
targetUri = sourceUri.MakeRelativeUri(targetUri);
targetPath = targetUri.ToString();
// 将相对路径反编码为本地路径格式
targetPath = HttpUtility.UrlDecode(targetPath);
// 返回相对路径
return targetPath;

二、将相对路径转换成绝对路径:

// 需要转换的相对路径
string targetPath = "./../test.txt";
// 相对路径对应的基准绝对路径
string sourcePath = Application.ExecutablePath;
// 获取当前工作目录
string tempPath = Environment.CurrentDirectory;
// 设置当前工作目录为基准绝对路径所在目录
Environment.CurrentDirectory = Path.GetDirectoryName(sourcePath);
// 获取相对路径对应的绝对路径
targetPath = Path.GetFullPath(targetPath);
// 还原当前工作目录
Environment.CurrentDirectory = tempPath;
// 返回绝对路径
return targetPath;

关于编程生成MD5字符串的说明

一、在C#中生成MD5字符串:

// 要生成MD5的字符串
string text = "MD5";
// 获取字符串对应字符集的字节缓存数组
byte[] buffer = Encoding.UTF8.GetBytes(text);
// 创建MD5构造器
MD5 md5 = MD5.Create();
// 生成MD5字节缓存数组
buffer = md5.ComputeHash(buffer);
// 将MD5字节缓存数组构造成MD5字符串
StringBuilder stringBuilder = new StringBuilder();
foreach (byte item in buffer)
{
    stringBuilder.Append(item.ToString("x2"));
}
// 获取MD5字符串
return stringBuilder.ToString();

二、在Java中生成MD5字符串:

// 要生成MD5的字符串
String text = "MD5";
// 获取字符串对应字符集的字节缓存数组
byte[] buffer = text.getBytes("UTF-8");
// 创建MD5构造器
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
// 生成MD5字节缓存数组
messageDigest.update(buffer);
buffer = messageDigest.digest();
// 将MD5字节缓存数组构造成MD5字符串
StringBuffer md5Buffer = new StringBuffer();
for (int i = 0, length = buffer.length; i < length; i++) {
    if (Integer.toHexString(0xFF & buffer[i]).length() == 1) {
        md5Buffer.append("0").append(Integer.toHexString(0xFF & buffer[i]));
    } else {
        md5Buffer.append(Integer.toHexString(0xFF & buffer[i]));
    }
}
// 获取MD5字符串
return md5Buffer.toString();

三、在PHP中生成MD5字符串:

// 要生成MD5的字符串
$text = 'MD5';
// 获取MD5字符串
return md5($text);

四、在JavaScript中生成MD5字符串:

// 定义MD5构造器
(function (window, undefined) {
    // 判断MD5构造器是否已经定义
    if (typeof (window.md5) == "function") {
        return;
    }
    // 定义MD5构造器相关function
    function safe_add(x, y) {
        var lsw = (x & 0xFFFF) + (y & 0xFFFF), msw = (x >> 16) + (y >> 16) + (lsw >> 16);
        return (msw << 16) | (lsw & 0xFFFF);
    }
    function bit_rol(num, cnt) {
        return (num << cnt) | (num >>> (32 - cnt));
    }
    function md5_cmn(q, a, b, x, s, t) {
        return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
    }
    function md5_ff(a, b, c, d, x, s, t) {
        return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
    }
    function md5_gg(a, b, c, d, x, s, t) {
        return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
    }
    function md5_hh(a, b, c, d, x, s, t) {
        return md5_cmn(b ^ c ^ d, a, b, x, s, t);
    }
    function md5_ii(a, b, c, d, x, s, t) {
        return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
    }
    function binl_md5(x, len) {
        x[len >> 5] |= 0x80 << (len % 32);
        x[(((len + 64) >>> 9) << 4) + 14] = len;
        var i, olda, oldb, oldc, oldd, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
        for (i = 0; i < x.length; i += 16) {
            olda = a;
            oldb = b;
            oldc = c;
            oldd = d;
            a = md5_ff(a, b, c, d, x[i], 7, -680876936);
            d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
            c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
            b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
            a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
            d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
            c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
            b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
            a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
            d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
            c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
            b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
            a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
            d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
            c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
            b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
            a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
            d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
            c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
            b = md5_gg(b, c, d, a, x[i], 20, -373897302);
            a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
            d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
            c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
            b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
            a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
            d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
            c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
            b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
            a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
            d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
            c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
            b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
            a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
            d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
            c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
            b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
            a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
            d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
            c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
            b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
            a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
            d = md5_hh(d, a, b, c, x[i], 11, -358537222);
            c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
            b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
            a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
            d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
            c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
            b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
            a = md5_ii(a, b, c, d, x[i], 6, -198630844);
            d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
            c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
            b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
            a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
            d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
            c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
            b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
            a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
            d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
            c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
            b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
            a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
            d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
            c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
            b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
            a = safe_add(a, olda);
            b = safe_add(b, oldb);
            c = safe_add(c, oldc);
            d = safe_add(d, oldd);
        }
        return [a, b, c, d];
    }
    function binl2rstr(input) {
        var i, output = '';
        for (i = 0; i < input.length * 32; i += 8) {
            output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
        }
        return output;
    }
    function rstr2binl(input) {
        var i, output = [];
        output[(input.length >> 2) - 1] = undefined;
        for (i = 0; i < output.length; i += 1) {
            output[i] = 0;
        }
        for (i = 0; i < input.length * 8; i += 8) {
            output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);
        }
        return output;
    }
    function rstr_md5(s) {
        return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
    }
    function rstr_hmac_md5(key, data) {
        var i, bkey = rstr2binl(key), ipad = [], opad = [], hash;
        ipad[15] = opad[15] = undefined;
        if (bkey.length > 16) {
            bkey = binl_md5(bkey, key.length * 8);
        }
        for (i = 0; i < 16; i += 1) {
            ipad[i] = bkey[i] ^ 0x36363636;
            opad[i] = bkey[i] ^ 0x5C5C5C5C;
        }
        hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
        return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
    }
    function rstr2hex(input) {
        var hex_tab = '0123456789abcdef', output = '', x, i;
        for (i = 0; i < input.length; i += 1) {
            x = input.charCodeAt(i);
            output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);
        }
        return output;
    }
    function str2rstr_utf8(input) {
        return unescape(encodeURIComponent(input));
    }
    function raw_md5(s) {
        return rstr_md5(str2rstr_utf8(s));
    }
    function hex_md5(s) {
        return rstr2hex(raw_md5(s));
    }
    function raw_hmac_md5(k, d) {
        return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d));
    }
    function hex_hmac_md5(k, d) {
        return rstr2hex(raw_hmac_md5(k, d));
    }
    /**
    * text:要生成MD5的字符串
    * return:返回生成的MD5字符串
    */
    window.md5 = function (text, key, raw) {
        if (!key) {
            if (!raw) {
                return hex_md5(text);
            }
            return raw_md5(text);
        }
        if (!raw) {
            return hex_hmac_md5(key, text);
        }
        return raw_hmac_md5(key, text);
    };
})(window);

// 要生成MD5的字符串
var text = "MD5";
// 获取MD5字符串
return md5(text);

更多信息请参阅:MD5_百度百科