我想实现一个数据转化为字符数组byte[]类型
1)如果此数据是整形,则将他变为十六进制,然后进行一下操作如123456,变为16进制为1E240,编程到的40 E2 01 00 (不够补零),然后将其编程字符数组。
2)如果为浮点则按照IEEE 浮点数格式
有没有好的算法,如果有源码最好,谢谢。

解决方案 »

  1.   

    string str = "123456";
                if (Regex.IsMatch(str, @"^\d+$"))
                {
                    var ary = Regex.Matches(Convert.ToString(Convert.ToInt32(str), 16), @"(?i)[a-f0-9]{1,2}(?=([a-f0-9]{2})*$)").OfType<Match>().Select(t => t.Value).Reverse().ToArray();
                }
      

  2.   

    string s = Convert.ToString(123456, 16);自己补零
    浮点数怎么了,你要什么代码,如果是比较浮点数,只有那些可以精确标识的小数(如0.5)才可以精确比较,其他的自己规定个范围,作为比较规则)
      

  3.   

    /// <summary>
            /// 字符串转换为16进制字符串
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            private string Decode(string str)
            {
                string strResult = string.Empty;
                byte[] CByte = Encoding.ASCII.GetBytes(str);
                foreach (byte b in CByte)
                {
                    strResult += b.ToString("X2") + " ";
                }
                return strResult;
            }
    /// <summary>
            /// 将指定的十六进制字符串转换为字节数组
            /// </summary>
            /// <param name="hexString"></param>
            /// <returns></returns>
            private static byte[] strToHexByte(string hexString)
            {
                hexString = hexString.Replace(" ", "");
                if ((hexString.Length % 2) != 0)
                    hexString += " ";
                byte[] returnBytes = new byte[hexString.Length / 2];
                for (int i = 0; i < returnBytes.Length; i++)
                    returnBytes[i] = Convert.ToByte( hexString.Substring(i * 2, 2),16);
                return returnBytes;
            }