C 如何將過大的int型整數轉換為byte型別

2021-10-22 16:33:01 字數 988 閱讀 8469

c#中,byte的取值範圍是0~255(如下)

現在有乙個值為10725的int型整數需要轉化為byte,顯然,這超出了byte型別的範圍。這時候我們可以將這個大的int「拆解」成兩個部分——將大int轉換成二進位制格式,然後每8位一段,再分別將這些段轉化成byte型別。

int sample_interval=

10725

;//將整數轉為二進位制數

string binary_string = convert.

tostring

(sample_interval,2)

;//取二進位制串的低8位

string low_string = binary_string.

substring(0

,8);

//取二進位制串的剩餘位(因為我是想要把資料分成兩個byte,所以除去低8位,剩下的部分我放到了一段)

string high_string = binary_string.

substring(8

, binary_string.length -8)

;//將低位二進位制轉化為short型(此處是為了資料需要而用short型)

short low_short = convert.

toint16

(low_string,2)

;short high_short = convert.

toint16

(high_string,2)

;//將低位的short型轉成byte,並以乙個byte大小寫入檔案

fs.writebyte((

byte

)(low_short));

fs.writebyte((

byte

)(high_short)

);

c語言int型和char型的自動型別轉換

char a 1 機器碼為0xff unsigned char b 254 機器碼0xfe if a b else 上述 輸出結果 a b 賦值用機器碼寫入記憶體 雖然我們以十進位制為兩個變數賦值,但是變數值在記憶體中是以二進位制機器碼的形式存在。如果十進位制數是負數,它就以補碼的形式存放在記憶體中...

C 中int型向無符號型別的轉換

在日常生活中,我們知道,加上乙個負數,等於減去這個負數的絕對值。那麼在c 裡,是否和我們平時的認知是一樣的呢?看一段小 int i 42 unsigned j 10 std cout這個 的輸出結果是什麼呢?和平時的答案不太一樣吧。下面就來 一下原因。因為在機器中,所有的data都是由二進位制數來儲...

如何將整數轉換為相應的字串

手寫的,沒有經過優化。將整數轉換為相應的字串。注意int64的最大值,以免溢位。char itoa my int64 value,char buffer,size t size assert buffer null assert size 1 size t len 0 int64 tempvalue...