谁会实现portlan(C++)??

山货 2004-12-06 06:09:19
谁会实现portlan(C++)??
...全文
128 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yevv 2004-12-06
  • 打赏
  • 举报
回复
有一个模拟程序 呵呵 大概是这样??
class portLan{
unsigned long int status_bitarray[26];
unsigned short int status_bytearray[26][26];
bool is_plm_valid(unsigned long int portlistmask);
public:
portLan(){
for(int i=0;i<26;i++)
{
status_bitarray[i]=0;
for(int j=0;j<26;j++)
{
status_bytearray[i][j]=0;
}
}
}
bool add(unsigned long int portlistmask);
bool remove(unsigned long int portlistmask);
……
};
bool portLan::is_plm_valid(unsigned long int portlistmask)
{
if(long int c=portlistmask & 0x00000037)return False;
else return True;
}
bool portLan::add(unsigned long int portlistmask)
{
//if(!is_plm_valid(portlistmask))return False;
unsigned long int logi_ruler=1;
int i=25;
bool tempshort[26]={0};
for(logi_ruler<<=6;logi_ruler!=0;logi_ruler<<=1)
{
if(logi_ruler&portlistmask)
{
status_bitarray[i]=status_bitarray[i]|portlistmask;
tempshort[i]++;
}
i--;
}
for(i=0;i<26;i++)
{
if(tempshort[i])
for(int j=0;j<26;j++)
status_bytearray[i][j]+=tempshort[j];
}
return True;
}
bool portLan::remove(unsigned long int portlistmask)
{
if(!is_plm_valid(portlistmask))return False;
unsigned long int logi_ruler=1;
int i=25;
bool tempshort[26]={0};
for(logi_ruler<<=6;logi_ruler!=0;logi_ruler<<=1,i--)
if(logi_ruler&portlistmask) tempshort[i]++;
for(int i=0;i<26;i++)
{
if(tempshort[i])
for(int j=0;j<26;j--)
{
status_bytearray[i][j]-=tempshort[j];
if(!status_bytearray[i][j])
{
logi_ruler=1;
logi_ruler=logi_ruler<<(31-j);
logi_ruler=~logi_ruler;
status_bitarray[i]=logi_ruler&status_bitarray[i];
}
}
}
}

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧