c 中各種資料型別的轉化

2021-05-23 18:02:11 字數 3342 閱讀 4336

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

對於初學者來說,在編寫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++)

方法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++)

方法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--)

方法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++)

在程式中我們是將整數i進行右移操作,那我們可不可以用左移操作呢?

首先,我們做個測試的程式來看看結果。當然要進行左移操作的話,i就不能和0xff做與運算了,不然結果就是0。我們修改後的程式如下:

int i=0x12345678;

byte result = new byte[4];

for(int pos=0;pos<4;pos++)

system.console.writeline(",,,",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.作業系統中大端序以及小端序的概念

例如:對於乙個整數0x12345678它在兩種模式下在記憶體的儲存形式。

在小端序中的存放方式:

**********

*   78   * 低位

**********  |

*   56   *  |

**********  |

*   34   *  |

**********  |

*   12   * 高位

**********

在大端序中的存放方式:

**********

*   12   * 低位

**********  |

*   34   *  |

**********  |

*   56   *  |

**********  |

*   78   * 高位

**********

在windows作業系統下,資料的存放是按小端序的。當資料右移時是將高位的資料移動到低位的記憶體裡,而左移是將低位的資料移動到高位中。而在資料型別轉化的時候是將低位的資料開始存入目的記憶體中的,這就是為什麼我們得到的資料是0的原因。

C 中幾種資料型別轉化總結

類名 變數 強制轉換 不能轉換會丟擲異常,值和 引用型別都可以 變數 as 類名 as 運算子用於執行引用型別的顯式型別轉換。如果要轉換的型別與指定型別相容,轉換就會成功 如果型別不相容,則返回null。還有conver.to x 主要用在值型別 將乙個基本資料型別轉換為另乙個基本資料型別 int ...

C 各種資料型別轉換

在在做一些互操作的時候往往需要一些型別的相互轉換,比如用c 訪問win32api的時候往往需要向api中傳入dword引數 即 uint引數這些數值所表示的資料在實際的應用中可能需要以字元的形式顯示,但是c 對api的關係無法跟c 相比,所以在c 中進行一些型別資料的轉換十分必要了,下面將用到的一些...

C 各種資料型別轉換

在在做一些互操作的時候往往需要一些型別的相互轉換,比如用c 訪問win32api的時候往往需要向api中傳入dword引數 即 uint引數這些數值所表示的資料在實際的應用中可能需要以字元的形式顯示,但是c 對api的關係無法跟c 相比,所以在c 中進行一些型別資料的轉換十分必要了,下面將用到的一些...