zoukankan      html  css  js  c++  java
  • c#.net 类型转化

    转载于:http://blog.csdn.net/rj03hou/archive/2008/01/31/2075890.aspx

    c#中Convert中没有ToFloat()方法。

    将string转化成float可以采用下面的方法 float.Parse()方法,相应的int.Parse()方法。

    float  ratio = score / point * 100;

    ratio.ToString("f1");

    可以使用上面的方法将float转化成带一位小数的字符串

    以下文章转自:http://blog.csdn.net/best_02/archive/2007/08/31/1766737.aspx

    作者邮箱:guduchuangtianxia@sina.com.cn

    c#中各种数据类型的转化
    对于初学者来说,在编写c#程序时最头痛的就是要进行各种数据类型的转换,

    由于对.net开发环境的不熟悉以及系统提供的API的不了解,在处理程序时占用

    了很长的时间,笔者虽然做c#的开发时间不长,但对数据之间的转化也有了一

    定的心得,现在共享出来希望对大家能有所帮助。

    1.int型转化为string
    int i;//i可根据自己的需要进行初始化
    string a = i.ToString();

    2.string转化为byte[]

    方法1:
    string t;//要转化的字符串
    char[] m = t.ToCharArray();
    byte[] n = new byte[m.Length];//转化的结果数组
    for ( i = 0; i < m.Length; i++)
    {
       n[i] = (byte)m[i];
    }

    方法2:
    利用系统提供的函数
    string str;
    Byte[] bt = System.Text.Encoding.ASCII.GetBytes(str.ToCharArray);

    3.int型转化为byte[]

    方法1:
    int i;
    byte[] temp = new byte[4];
    int pos;
    for (pos = 0; pos < 4; pos++)
    {
    temp[pos] = (byte)(i & 0xff);
    i >>= 8;
    if (i == 0) break;
    }

    方法2:
    利用系统提供的函数
    int i;
    byte[] tdata = new byte[4];
    data = System.BitConverter.GetBytes(i);

    4.byte[]转化为string

    方法1:
    byte[] tmp;
    string str =new System.Text.ASCIIEncoding ().GetString (tmp );

    方法2:
    byte[] tmp;
    string str = System.Text.Encoding.ASCII.GetString(tmp);

    5.string类型转化为int

    方法1:
    string  str;
    int i = Convert.ToInt32(str);

    方法2:
    string  str;
    int i = Int32.Parse(str);

    6.byte[]转换为int

    方法1:

    int res = 0; //结果
    int temp = 0;
    byte[] result;//可由上文得到,或自己进行初始化
    for (int h = 3; h>=0; h--)
    {
    res<<= 8;
    temp = result[h] & 0xff;
    res |= temp;
    }

    方法2:
    byte[] result;
    int res = System.BitConverter.ToInt32(result,result想转化的起始位置);

    以下文章转自:http://blog.csdn.net/bEst_02/archive/2007/09/01/1768318.aspx

     从小端大端问题剖析数据类型转化   

    在c#数据类型转化一文中提及了由int型转化为byte[]的一个方法,具体的实现如下:
    int i=0x12345678;
    byte[] result = new byte[4];
     
    for(int pos=0;pos<4;pos++)
    {
        byte[pos] = (byte)(i&0xff);
        i>>=8;
    }
     
    在程序中我们是将整数i进行右移操作,那我们可不可以用左移操作呢?
     
    首先,我们做个测试的程序来看看结果。当然要进行左移操作的话,i就不能和0xff做与运算了,不然结果就是0。我们修改后的程序如下:
     
    int i=0x12345678;
    byte[] result = new byte[4];
     
    for(int pos=0;pos<4;pos++)
    {
        byte[pos] = (byte)(i&0xff000000);
        i<<=8;
    }
     
    System.Console.WriteLine("{0},{1},{2},{3}",byte[0],byte[1],byte[2],byte[3]);
     
    调试运行,结果如下:
    0,0,0,0
    我们发现运行的结果全为0,为什么呢?
     
    在讲原理之前,我们要先了解两个基本知识:
     
    1.类型转化时的内存操作
    当我们把一个int型强制转化为byte时,由于byte只有1个字节,而int型是4个字节,这样就会产生截断,int把它最低的内存空间里的值放到了byte所对应的内存空间里。如图所示:
     
       Byte型                     int
     **********             **********
     * 1 Byte * <-----------* 1 Byte *  低位
     **********             **********  |
                                  * 1 Byte *     |
                                   **********  |
                                  * 1 Byte *     |
                                   **********  |
                                  * 1 Byte *  高位
                                  **********
    2.操作系统中大端序以及小端序的概念
    有关于大端和小端的具体的细节我不想太多,有兴趣的可以到csdn技术文挡里搜索相关内容。下面用图示的方法简单介绍大端和小端。
    例如:对于一个整数0x12345678它在两种模式下在内存的存储形式。
    在小端序中的存放方式:
     **********
     *   78   * 低位
     **********  |
     *   56   *  |
     **********  |
     *   34   *  |
     **********  |
     *   12   * 高位
     **********
     
    在大端序中的存放方式:
     **********
     *   12   * 低位
     **********  |
     *   34   *  |
     **********  |
     *   56   *  |
     **********  |
     *   78   * 高位
     **********
     
    通过上面的介绍,大家应该对这个原理懂的差不多了,那我就抛砖引玉简要说明下:
    在Windows操作系统下,数据的存放是按小端序的。当数据右移时是将高位的数据移动到低位的内存里,而左移是将低位的数据移动到高位中。而在数据类型转化的时候是将低位的数据开始存入目的内存中的,这就是为什么我们得到的数据是0的原因
     
  • 相关阅读:
    rsync同步公网yum源搭建本地yum仓库
    为smokeping添加日志开启debug
    python中if __name__ == '__main__':的作用
    使用telnet访问百度
    RRDtool绘制lvs连接数图形
    HTML表格
    ip netns
    redis动态扩展内存
    route命令
    设置nginx日志滚动
  • 原文地址:https://www.cnblogs.com/lihuanhuan/p/10612244.html
Copyright © 2011-2022 走看看