using System;
namespace GetSysID { /// <summary> /// SysID 的摘要说明。 /// </summary> public class GetSysID { public GetSysID() { // // TODO: 在此处添加构造函数逻辑 // } public string sysid() { string sysID,LC,LC1,ss;
string year,day,hour,minute,sec,msec; year = System.DateTime.Now.Year.ToString(); day = System.DateTime.Now.DayOfYear.ToString(); hour = System.DateTime.Now.Hour.ToString(); minute = DateTime.Now.Minute.ToString(); sec = DateTime.Now.Second.ToString(); msec = DateTime.Now.Millisecond.ToString(); if (year.Length == 4) { year = year.Substring(2,2); } LC1 = ""; LC1 = LC1 + ChangStr(true,year,"0",2); LC1 = LC1 + ChangStr(true,day,"0",3); LC1 = LC1 + ChangStr(true,hour,"0",2); LC1 = LC1 + ChangStr(true,sec,"0",2);
long t; t = Convert.ToInt64(LC1);
LC1 = ""; LC1 = IntToHex(t,8);
ss = ChangStr(true,sec,"0",2); t = Convert.ToInt64(ss); LC1 = LC1 + IntToHex(t,2); LC1 = LC1 + IntToHex(Convert.ToInt64(msec),3);
//64进制 ss = System.Guid.NewGuid().ToString(); LC = ss.Substring(0,8); LC = CheckID(LC);
LC1 = LC1 + ChangStr(true,LC,"0",8); ss = ""; ss = LC1.Substring(1,8); sysID = HexTo36(ss,6); ss= LC1.Substring(8,13); sysID = sysID + HexTo36(ss,10);
return sysID; }
//转换为十六进制数据 private string IntToHex(long num,int len) { string lcHexStr,strHex; lcHexStr = "0123456789ABCDEF"; int lMod,len1; lMod = 0; strHex = "";
while (num > 0) { lMod = (int)(num % 16); num = num / 16; strHex = lcHexStr.Substring(lMod ,1) + strHex; }
len1 = strHex.Length; if (len1 < len ) strHex = ChangStr(true,strHex,"0",len); return strHex; }
//改变字符串的到指定的长度 private string ChangStr(bool bISF,string strHex,string subStr,int @len) { int len1; len1 = len - strHex.Length; for (int i = 0; i < len1; i++) { if (bISF == true) strHex = subStr + strHex; else strHex = strHex + subStr; } return strHex; } //检查字符串 private string CheckID(string str) { string outStr; char charStr; int len; outStr = "";
str = str.ToUpper(); len = str.Length;
for (int i =0; i < len; i++ ) { charStr = str[i]; if ((((int)charStr >= 48 ) && ((int)charStr <= 59)) || (((int)charStr >= 65 ) && ((int)charStr <= 70))) { outStr = outStr + charStr; } else outStr = outStr + IntToHex((int)charStr,0); } if (outStr.Length > 8) outStr = outStr.Substring(0,8); return outStr; }
//转换成36进制 private string HexTo36(string strHex,int len) { string str62,lc62Str; lc62Str = "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; str62 = ""; int lMod = 0; long num1 = 0;
//转换成十进制 long lnsHex = 1; strHex = strHex.ToUpper(); int len1; len1 = strHex.Length ; while (len1 > 0) { char ss; ss = strHex[(len1 -1)]; num1 = num1 + (lc62Str.IndexOf(ss) ) * lnsHex; if (len1 == 1) lnsHex = 16; else lnsHex = lnsHex * 16; len1 --; //listBox1.Items.Add(num1.ToString()); } //MessageBox.Show(num1.ToString()); //转换成36进制 str62 =""; while (num1 > 0) { lMod = (int)(num1 % 36); num1 = num1 / 36; str62 = lc62Str.Substring(lMod ,1) + str62; } len1 = str62.Length;
if (len1 < len) { str62 = ChangStr(true,str62,"0",len); } return str62; } } }

|