|
5207
- 皇帝
- 1983-12-1
- 1570
- 2048
- 93
- 3965.8 M
|
发表者
t
T
发表于 2007-04-20 12:57
|只看楼主
- class CardFun
- {
- #region HEX,BIN,STR 互转
- //以下4方法 用于数据间的互转,并可通过互相调用,达到跳跃转换的目的
- //Bin 转 BCD 的显示(str)
- public static string B_to_BCD(byte[] data)
- {
- //和转hex一样,但是多一个check
- string backstr = "";
- string str = "";
- for (int i = 0; i < data.Length; i++)
- {
- str = "00" + data[i].ToString("X");
- str = str.Substring(str.Length - 2, 2);
- if (str.ToUpper().IndexOf("A") != -1 || str.ToUpper().IndexOf("B") != -1 || str.ToUpper().IndexOf("C") != -1 || str.ToUpper().IndexOf("D") != -1 || str.ToUpper().IndexOf("E") != -1 || str.ToUpper().IndexOf("F") != -1)
- {
- return backstr = "convert BCD err";
- }
- backstr += str;
- }
- return backstr;
- }
- //Bin 转 Hex 的显示(str)
- public static string B_to_Hstr(byte[] data)
- {
- string backstr = "";
- string str = "";
- for (int i = 0; i < data.Length; i++)
- {
- str = "00" + data[i].ToString("X");
- str = str.Substring(str.Length - 2, 2);
- backstr += str;
- }
- return backstr;
- }
- //Bin 转 Bin 的显示(str,逗号分隔)
- public static string B_to_Bstr(byte[] data)
- {
- string backstr = "";
- string dash = "";
- for (int i = 0; i < data.Length; i++)
- {
- backstr += dash + data[i];
- dash = ",";
- }
- return backstr;
- }
- //Hex(str) 转 Bin
- public static byte[] strH_to_B(string hex)
- {
- hex = hex.Trim();
- byte[] bt;
- int hexlen;
- if (hex.Length % 2 != 0)
- {
- hex = "0" + hex;
- }
- hexlen = hex.Length / 2;
- bt = new byte[hexlen];
- for (int i = 0; i < hexlen; i++)
- {
- bt[i] = byte.Parse(hex.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber);
- }
- return bt;
- }
- //以下4方法 用于读卡时显示数据的转换
- //Bin 转BCD显示,此卡特别的,认为存在F的BCD不为错,(F仅仅为填充)
- public static string getBCD(byte[] data)
- {
- string str = "";
- //认为本程序中BCD不会出现F错误使用,F就是填充
- str = B_to_Hstr(data).Replace("F", "");
- if (str.ToUpper().IndexOf("A") != -1 || str.ToUpper().IndexOf("B") != -1 || str.ToUpper().IndexOf("C") != -1 || str.ToUpper().IndexOf("D") != -1 || str.ToUpper().IndexOf("E") != -1 || str.ToUpper().IndexOf("F") != -1)
- {
- str = "convert BCD err";
- }
- //str = B_to_BCD(strH_to_B(B_to_Hstr(data).Replace("F","")));//better check,but low effect
- return str;
- }
- //Bin 转Bin的显示
- public static string getBin(byte[] data)
- {
- string str = "";
- str = B_to_Bstr(data);
- return str;
- }
- //Bin 转Hex的显示
- public static string getHex(byte[] data)
- {
- string str = "";
- str = B_to_Hstr(data);
- return str;
- }
- //Bin 转Str的显示
- public static string getStr(byte[] data)
- {
- string str = "";
- Encoding gb2312 = Encoding.GetEncoding("gb2312");
- str = gb2312.GetString(data);
- return str;
- }
- #endregion
- //获得卡中数据存放位置
- public static int getaddr(int sector, int block, int loc)
- {
- return (sector * 4 + block) * 16 + loc;
- }
- }
复制代码
|