$0101是什么意思?(100分)

C

chunfly

Unregistered / Unconfirmed
GUEST, unregistred user!
ErrorCode := WSAStartup($0101, SData)中,$0101是什么意思?
$在此起什么作用?0101是二进制吗?
 
应该只是参数的编号吧?
 
Word $表示十六进制
 
$表示是十六进制,这个地方表示WSA的版本是1.1
 
$0101
$0A5B
 
就是101美元
 
--$表示是十六进制,这个地方表示WSA的版本是1.1
十六进制0101转换成十进制为257,怎么会表示WSA的版本是1.1?

另外word和int有什么区别?如下:
wVersionRequested = MAKEWORD( 2, 0 );
err = WSAStartup( wVersionRequested, &wsaData );
 
$1010是说的该程序使用的是winsock 1,不是winsock2
 
你好好看看MSDN里的有关WSAStartup的帮助就很清楚了
 
$0101=257
但是WSAStartup会把它分开理解成$01,$01
代表版本号
 
在Windows下编程没有看帮助的习惯太痛苦了吧。该恶补一下基本知识了拉
呵呵,WORD总不会是OFFICE里的啦,
byte char -8bit
word -16bit 0-2^16-1
int -32bit

WSAStartup
The Windows Sockets WSAStartup function initiates use of Ws2_32.dll by a process.

int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
Parameters
wVersionRequested
[in] Highest version of Windows Sockets support that the caller can use.
[red]The high-order byte specifies the minor version (revision) number

the low-order byte specifies the major version number.[/red]
lpWSAData
[out] Pointer to the WSADATA data structure that is to receive details
of the Windows Sockets implementation.
 
err = WSAStartup( MAKEWORD( 2, 0 ), &wsaData );
err = WSAStartup( $0101,&wsaData );
都可以的
MAKEWORD( 2, 0 )得出的是什么结果?
 
就是$0202,
 
$0101 是表示一种顏色吧﹗
 
在C中MakeWord定义如下:
#define MAKEWORD(a, b) /
((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8))
在Delphi中MakeWord定义如下:
function MakeWord(A, B: Byte): Word;
begin
Result := A or B shl 8;
end;

只是我也不清楚把A和B进行或运算然后左移8位得出的是什么东西,为什么要这样做?
请熟悉的大侠帮忙解释一下
 
应该是先把B左移8位再和A进行或运算,
为什么这样,看看最基本的C语言的书就行了,
如果看不明白,画个操作图就应该可以明白了
 
$表示十六进制
 
多人接受答案了。
 
如果使用Windows socket 版本 1.1,初始化函数 WSAStartup 的第一个参数就应该写成 0x101,或者 0x0101,或者 MAKEWORD(1, 1)。如果使用版本 1.2,第一个参数就是 0x0201,或者 MAKEWORD(1, 2)。
 

Similar threads

顶部