rpc
的xdr
(外部資料表示)是為了編碼(解碼)
c語言定義的資料,從而使得
rpc傳輸的資料平台無關性。
xdr對
c語言常見的型別編碼規則在之前已經說過了,參見
,對於說明書
test.x
定義的定義,最終會被
rpcgen
翻譯成支援
c語言支援的型別定義,之後
test.x
就沒有任何作用了。
如在
test.x
中定義
struct data
;
對應的
test.h
struct data vopaque_arg;
struct vlong_arg;
};typedef struct data data;
從test.h
中可以看到,對於
opaque, char
的定義,在
c語言中對對應
char
,而根據
xdr的規則,
opaque
編碼為固定長度
n個位元組的序列(會被補全至
4位元組的倍數);而
char
會被編碼成固定長度n個
4位元組元素序列。怎麼這裡都是
char
???別急,編碼規則在標頭檔案中是沒有顯現出來的,根據說明書中定義,
rpcgen
會生成相應的方法對各種資料進行編碼,而這些編碼方法均在
test_xdr.c中。
再看
test_xdr.c
bool_t
xdr_data (xdr *xdrs, data *objp)
從test_xdr.c
中可以看出,
opaque
,char
是分別是通過
xdr_opaque,xdr_vector
編碼(需要傳遞各個元素編碼的方法,如此例中的
xdr_char()
),故在
xdr表示中
opaque
,char
是不同的。
對於opaque<>
,datatype<>
都是通過
xdr_array
實現的,同樣根據傳遞過來的編碼方法
xdr_opaque, xdr_long
,它們被編碼成不同的格式。
BCD資料表示
2.13 bcd資料表示 雖然整數和浮點格式已經可以滿足一般程式的資料表示需求,但是在一些特殊的情況下,其他的數字表示方式更加方便一些。在本節中,我們將對二進位制編碼的十進位制 bcd 格式進行討論,因為80x86 cpu為這種資料表示方式提供了少量的硬體支援。bcd數值是由一些半位元組組成的序列,...
Struts Hibernate資料表示
在 struts hibernate 這種結構中,是不應該把hibernate產生的po直接傳遞給jsp的,不管他是iterator,還是list,這是乙個設計錯誤。我來談談在j2ee架構中各層的資料表示方法 web層的資料表示是formbean,資料 於html form post 業務層的資料表...
資料表示 機器數
各種數值在計算機中的表示形式稱為機器數。特點是採用二進位制計數制,數的符號使用0和 1表示,小數點則隱含表示不佔位。無符號數 表示的是正數,機器中沒有符號未。帶符號數 機器數的最高位表示正負的符號位,其餘為表示數值。純整數 約定小數點的位置在機器數的最低數值位之後。純小數 約定小數的位置在機器數的最...