Показать сообщение отдельно
Старый 21.01.2007, 01:47   #1
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Запаковка флагов в один байт.

Все что будет здесь написанно в основном касается программирования сетевых игр.

Иногда надо передать информацию весьма сжато, особенно если эта информация типа boolean (0/1). Ну например мочить своих/нет, использовать мины/нет и т.д.
вот пример как ету инфу запокавать в один байт. потом его можно chr командой привести к одной букве и отпрваить ее по сети, радуясь экономии трафика.
b=PackFlagsToByte(1,1,1,0,0,1,1,0)

For i=0 To 7
	Write(ub(b,i))
Next
WaitKey


Function PackFlagsToByte%(f0,f1,f2,f3,f4,f5,f6,f7)
	If f0<0 Then f0=0
	If f0>1 Then f0=1	
	If f1<0 Then f1=0
	If f1>1 Then f1=1
	If f2<0 Then f2=0
	If f2>1 Then f2=1
	If f3<0 Then f3=0
	If f3>1 Then f3=1
	If f4<0 Then f4=0
	If f4>1 Then f4=1
	If f5<0 Then f5=0
	If f5>1 Then f5=1
	If f6<0 Then f6=0
	If f6>1 Then f6=1
	If f7<0 Then f7=0
	If f7>1 Then f7=1
	rb%=0
	rb=f0 Shl 7+f1 Shl 6+f2 Shl 5+f3 Shl 4+f4 Shl 3+f5 Shl 2+f6 Shl 1+f7
	Return rb
End Function

Function ub%(b_%,bit)
	bit=7-bit
	Return (b_ Shr bit) Mod 2
End Function
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
3dr1aN (05.02.2009), Egor Rezenov (29.03.2011), LLI.T.A.L.K.E.R. (07.03.2011), PackegerX (04.09.2011), tormoz (11.12.2008)