using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CommService { /* *类名称:Utility *创建人:韩荣伟 *创建时间:2010-10-30 *功能描述:工具类 */ class Utility { /* *方法名称:floatStringToBCD *创建人:韩荣伟 *创建时间:2010-10-30 *参数描述:string sFloat 待转换的浮点数字符串, *int nIntSize 整数位数, *int nFloat 小数位数, *ref byte[] arrBytes 保存的字节数组 *返回描述:bool true 转换成功,false 失败 *功能描述:将浮点数转换为BCD码 */ public static bool floatStringToBCD(string sFloat,int nIntSize,int nFloat, ref byte[] arrBytes) { if (sFloat == "" || (nIntSize + nFloat)%2 > 0) { return false; } string sLeft; string sRight; int nFirstPos = sFloat.IndexOf('.'); int nOldLen = sFloat.Length; int nPos = nFirstPos; while (nPos >= 0) { sFloat = sFloat.Remove(nPos, 1); nPos = sFloat.IndexOf('.'); } if (nFirstPos == 0) { sLeft = new string('0', nIntSize); sRight = sFloat; } else if (nFirstPos == -1 || nFirstPos == (nOldLen - 1)) { sLeft = sFloat; sRight = new string('0', nFloat); } else { sLeft = sFloat.Substring(0, nFirstPos); sRight = sFloat.Substring(nFirstPos, sFloat.Length - nFirstPos); } sLeft = sLeft.PadLeft(nIntSize, '0'); sRight = sRight.PadRight(nFloat,'0'); string sOK = sLeft.Substring(sLeft.Length - nIntSize, nIntSize) + sRight.Substring(0, nFloat); arrBytes = new byte[sOK.Length / 2]; for (int i = 0; i < sOK.Length / 2; i++) { arrBytes[i] = Convert.ToByte(sOK.Substring(2 * i, 2), 16); } return true; } } }