short型別和CByteArry之間的轉換使用

2021-06-20 00:45:48 字數 972 閱讀 3562

近日做了串列埠傳送程式,其中遇到了標識資料長度為short型別,但是需轉換為位元組形式進行傳送,經查資料及整合得出以下方法,以此為記,方面以後查詢,更希望與人方便,具體如下。

首先定義兩個巨集

#define low_byte(x) ((x) & 0xff)//這個巨集定義是取short型別的高位元組

#define hi_byte(x) (((x) >> 8) & 0xff)//這個巨集定義是取short型別的低位元組

測試**如下:

cstring str;

short n = 345;

short n1;

str.format("%d",n);

messagebox(str);

cbytearray ba;

ba.setsize(2);

//lstrcpy((lptstr)ba.getdata(),str);

cstring strtemp;

int icount = ba.getsize();

ba[0] = hi_byte(n);

ba[1] = low_byte(n);

str.format("%d",icount);

messagebox(str);

strtemp.format("%d",ba[0]);//此值為1為short高位元組整形資料

//messagebox(strtemp);

strtemp.format("%d",ba[1]);//此值為89為short低位元組整形資料

//messagebox(strtemp);

n1 = (short)(ba[0]<<8);//此步驟是將兩個位元組的資料合成乙個short型別

n1 = n1 + ba[1];

strtemp.format("%d",n1);

messagebox(strtemp);

for(int i=0;i

以上**經測試無誤,來回轉換資料正確!

long int和short與byte之間的轉化

技術點 計算機中儲存是用補碼!同時注意一下計算省略了高位不變部分 1 byte 有符號 意思是有正和負 在網路傳輸中都是會用到byte的,它佔1個位元組,共8位,比如說11111111就可以用1個byte表示,轉化為10進製 2的6次 2的5次 2的4次 2的3次 2的2次 2的1次 2的0次 12...

計組實驗二(short與int的型別轉換)

首先我們知道,short型在計算機中儲存時占用了16個bit,int型占用了32個bit,題目要求的都是有符號數 因此short 0 14位是數值位,15位是符號位 int 0 30位是數值位,31位是符號位 從short到int,我們需要將short中的0 14位存入int型的0 14位,同時將符...

命名型別和未命名型別和基礎型別

命名型別 乙個命名型別一定跟其他型別不同.哪些是命名型別 1.預先宣告的型別,如int int8 boo float32.2.使用type宣告的型別,類似起別名,如type aint int var i int named type type myint int named type var b b...