int 轉byte 的相關方法和應用場景

2022-01-13 17:18:15 字數 1855 閱讀 8351

在c#中把int轉成byte一般都會使用bitconverter.getbytes可以獲取得到,但bitconverter有個問題就是每次呼叫都會產生乙個新byte;如果你比較執著的話以下提供兩種方式可以省下這一些。

從bitconverter中把**偷取出來,加功一下:),先看下bitconverter.getbytes關於int的方法

1

public

unsafe

static

byte getbytes(int value)2 8

return array;

9 }

可以改成如下:

1

public

class inttobytes2

2

11return m4bytedata;

12 }

13 }

還有一種是通過定義乙個結構

1

public

class inttobytes1

2

14 [structlayout(layoutkind.explicit)]

15struct switcher

16

28 }

其實還有一種就是通過移位來實現,這裡就不多說。

簡單測試一下效果,建議編譯成release然後單獨執行exe看情況,如果不是結果可能有比較大的出入

1 inttobytes1 t1 = new inttobytes1();

2 inttobytes2 t2 = new inttobytes2();

3 system.diagnostics.stopwatch sw = new system.diagnostics.stopwatch();

4 sw.reset();

5 sw.start();

6for (int i = 0; i < 9999999; i++)

7

10 sw.stop();

11 console.writeline(sw.elapsed.totalmilliseconds);

12 sw.reset();

13 sw.start();

14for (int i = 0; i < 9999999; i++)

15

19 sw.stop();

20 console.writeline(sw.elapsed.totalmilliseconds);

21 sw.reset();

22 sw.start();

23for (int i = 0; i < 9999999; i++)

24

28 sw.stop();

29 console.writeline(sw.elapsed.totalmilliseconds);

其實在.net framework裡不僅公是bitconverter存在這情況,在我們特別常用encoding.getbytes都是通過這方式來處理,還有string.tochararray等在高密集的處理時都會大量地構建新的byte和char.如果你比較關心這些細節不防多看下這些物件的方法,然後通過某些途勁把這些問題解決。這不僅僅能夠提高一點處理效率還能解放一些gc的工作。

byte 和int型的互轉

這種轉換有有意義的,比如可以將多個byte型的字段,轉換後放到乙個int欄位中。例如color的a,r,g,b值,就可以放到乙個int中,需要使用的時候,再從int轉換成byte陣列。它真正的意義還在於給我們提供了另一種儲存資料的思想,它比較類似於位圖儲存法。下面記錄下具體的實現方式。byte in...

string 轉int 的方法

首先感謝群裡一位兄弟老a,讓我更加熟悉了string 轉int 方法。廢話不多說,直接貼 背景 string liststring new string 方法1 迭代 int c new int liststring.length 09for int i 0 i liststring.length ...

C string轉int的方法

一 點睛 需要用到下面這一組函式。long int strtol const char nptr,char endptr,int base 將引數nptr字串根據引數base來轉換成有符號的整型 long long int strtoll const char nptr,char endptr,in...