C 常用資料型別間的轉換

2022-02-02 17:54:11 字數 4339 閱讀 6631

資料型別有很多種,資料型別間的轉換也是有很多的方法,如果不細心整理的話等到用的時候再查就會顯得很浪費時間,所以決心整理出這篇博文。主要是講解常用資料型別之間的轉換方法以及常見資料型別所佔位元組數。

位元組資料型別與其它資料型別間的轉換方法主要放在bitconverter類中:

其它資料型別轉換為位元組型別主要通過過載getbytes()方法返回位元組型別陣列。

但是字串型別根據編碼方式的不同返回的位元組型別不同,所以字串型別的轉換通過encoding類中的getbytes()方法返回位元組陣列。

關於占用位元組情況的注意:

布林型別占用乙個位元組,雖然布林型別只用一位元就能表示但是還是需要占用乙個位元組,度娘說最小的儲存單元是一位元組。

字元型別在c#中占用二位元組,代表乙個unicode字元,marshal.sizeof((typeof(char)); 得到的是非託管型別的大小(占用一位元組)。在測試中會發現存入數字就是乙個位元組,存入陣列就是兩個位元組。

還有不要誤會啊,字串型別是沒有固定長度的,是在實際使用中根據實際情況確定長度的。

下面測試**:

//定義變數並初始化

byte test_byte = new byte ;

byte temp_byte;

bool test_bool;

int test_int;

float test_float;

char test_char;

string test_string;

//byte 2 bool

//返回由位元組陣列中指定位置的乙個位元組轉換來的布林值。

//public static bool toboolean(byte value, int startindex);

test_bool = bitconverter.toboolean(test_byte, 1);

console.writeline("bool is: ", test_bool.tostring());

//bool 2 byte

//以位元組陣列的形式返回指定的布林值。

//public static byte getbytes(bool value);

temp_byte = bitconverter.getbytes(test_bool);

console.writeline("bool length is: ", temp_byte.length);

//byte 2 int

//返回由位元組陣列中指定位置的四個位元組轉換來的 32 位有符號整數。

//public static int toint32(byte value, int startindex);

test_int = bitconverter.toint32(test_byte, 0);

console.writeline("int is: ", test_int);

//int 2 byte

//以位元組陣列的形式返回指定的 32 位有符號整數值。

//public static byte getbytes(int value);

temp_byte = bitconverter.getbytes(test_int);

console.writeline("int length is: ", temp_byte.length);

//byte 2 float

//返回由位元組陣列中指定位置的四個位元組轉換來的單精度浮點數。

//public static float tosingle(byte value, int startindex);

test_float = bitconverter.tosingle(test_byte, 0);

console.writeline("float is: ", test_float);

//float 2 byte

//以位元組陣列的形式返回指定的單精度浮點值。

//public static byte getbytes(float value);

temp_byte = bitconverter.getbytes(test_float);

console.writeline("float length is: ", temp_byte.length);

//byte 2 char

//返回由位元組陣列中指定位置的兩個位元組轉換來的 unicode 字元。

//public static char tochar(byte value, int startindex);

test_char = bitconverter.tochar(test_byte, 0);

console.writeline("char is: ", test_char);

//char 2 byte

//以位元組陣列的形式返回指定的 unicode 字元值。

//public static byte getbytes(char value);

temp_byte = bitconverter.getbytes(test_char);

console.writeline("char length is: ", temp_byte.length);

//byte 2 string

//將指定的位元組子陣列的每個元素的數值轉換為它的等效十六進製制字串表示形式。

//public static string tostring(byte value, int startindex);

test_string = bitconverter.tostring(test_byte, 0);

console.writeline("string is: ", test_string);

//string 2 byte

//在派生類中重寫時,將指定的 system.string 中的所有字元編碼為乙個位元組序列。

//public virtual byte getbytes(string s);

temp_byte = encoding.default.getbytes(test_string);

console.writeline("string length is: ", temp_byte.length);

//char test

char test_c1 = '人';

char test_c2 = '1';

temp_byte = bitconverter.getbytes(test_c1);

console.writeline("byte characters occupy is: ", temp_byte.length);

temp_byte = bitconverter.getbytes(test_c2);

console.writeline("byte digital occupy is: ", temp_byte.length);

//string test

string test_str1 = "人";

string test_str2 = "1";

temp_byte = encoding.default.getbytes(test_str1);

console.writeline("byte characters occupy is: ", temp_byte.length);

temp_byte = encoding.default.getbytes(test_str2);

console.writeline("byte digital occupy is: ", temp_byte.length);

將乙個基本資料型別轉換為另乙個基本資料型別convert類:

區別,以數值8為例:

bitconverter.getbytes();//以位元組陣列的形式返回指定的 32 位有符號整數值。

返回的是位元組陣列,也就是數值33的儲存形式:00000000 00000000 00000000 00001000 ,在除錯中十進位制顯示:0 0 0 8

convert.tobyte();//將指定的 32 位有符號整數的值轉換為等效的 8 位無符號整數。

返回的是位元組,也就是把數值8轉換為位元組型別的8了:00001000 ,在除錯中十進位制顯示為:8

C 常用資料型別轉換

一 其他資料型別轉化為字串 char temp 200 1 短整型 int i itoa i,temp,10 將i轉化為字串放入temp中,最後乙個數字表示十進位制 itoa i,temp,2 將i轉化為字串放入temp中,最後乙個數字表示二進位制 2 長整形 long l ltoa l,temp,...

python 資料型別間轉換

自動型別轉換 數字型別精度從低到高 預設從高進度到低精度 bool例 true 1 2 false 1 1 3 3.14 6.14 3 3 4j 6 4j 強制型別轉換 number數字型別部分 int 整型 浮點型 5.6 5,注意不會四捨五入 布林型別 true 1 flase 0 純數字字串 ...

Java 資料型別間的轉換

一 list轉string陣列轉換 arraylistlist new arraylist string list.toarray newstring list.size 二 list 轉 float 陣列 float arr newfloat list.size for int i 0 i lis...