1.高低位元組互換:
#define bigtolittle16(a) (( ((unsigned short)(a) & 0xff00) >> 8) | (((unsigned short)(a)& 0x00ff) << 8))
假如有乙個32位的資料 0x11223344,則在小端模式上的機器上儲存為如下的形式:
0x11223344這個數中 0x11 是高位元組(msb),0x44是地位元組(lsb)
討論大小端的時候最小單位是位元組
記憶體的畫法中採用的是向上增長的
可以將資料比作方向盤,順時鐘旋轉得到的在記憶體中的布局是小端儲存
至於大端模式用文字描述是,低位址上存放高位元組,高位址上存放低位元組。
測試**:
unsigned short a=sizeof(morer_protocol_head);
printf("a:%d\n",a);
unsigned short b=a&0xff00;
unsigned short e=b>>8;
unsigned short c=a&0x00ff;
unsigned short d=c<<8;
printf("b:%d,e:%d,c:%d,d:%d\n",b,e,c,d);
執行結果:
2.memcpy函式,
void *memcpy(void *dest, const void *src, size_t n);
從源src所指的記憶體位址的起始位置開始拷貝n個位元組到目標dest所指的記憶體位址的起始位置中
定義結構體:
struct mbap_head
};
將乙個結構體拷貝到乙個字元陣列時,依次將結構體的成員變數拷貝到字元陣列中,拷貝結果如下圖:
源**:
//#include "stdafx.h"
struct morer_protocol_head
};struct mbap_head
};#define bigtolittle16(a) (( ((unsigned short)(a) & 0xff00) >> 8) | (((unsigned short)(a)& 0x00ff) << 8))
#define pack_max_size 512
int _tmain(int argc, _tchar* argv)
c 上位機開發3
從.net framework 2.0開始,c 提供了serialport類用於實現串列埠控制。命名空間 system.io.ports。其中詳細成員介紹參看msdn文件。下面介紹其常用的字段 方法和事件。1.常用字段 名稱說明 portname 獲取或設定通訊埠 baudrate 獲取或設定序列波...
C 上位機簡單使用
寫的比較簡單 破解時間限制的補丁 提取碼1123 如下 示例 opcserver objserver opcgroups objgroups opcgroup objgroup opcitems objitems array stritemids array lclienthandles array...
C 上位機軟體 串列埠
using system.io.ports 串列埠類 serialport 屬於該命名空間 string portstr serialport.getportnames 搜尋當前裝置下的串列埠 該方法為串列埠類的靜態方法,呼叫方法 類名 函式名public serialport sp newseri...