近日做了串列埠傳送程式,其中遇到了標識資料長度為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...