为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦介绍下void send()等函数

麻烦介绍下void send()等函数

C++
慕桂英3389331 2023-01-13 15:11:29

代码如下:

unsigned char32 Slave_adr[8];
unsigned char32 Slave_Send_adr[73];
void bit_set(int32 x,int y)
{ int32 temp;
temp=1;
temp=temp<<y;
x=x|temp;
}
void bit_clear(int32 x,int y)
{ int32 temp;
temp=1;
temp=temp<<y;
temp=~temp;
x=x&temp;
}
int1 bit_test(int32 x,int y)
{ int32 temp;
temp=1;
temp=temp1<<y;
temp=x&temp;
if(temp) return(1);
else return(0);
}
//输入参数:x为从机号码;
void Slave_Address_set_bit(unsigned char *buff)
{ unsigned char quotient_Value; //用来放商值;
unsigned char residue_Value; //用来放余数;
unsigned char x;
x=atoi(buff);
quotient_Value=x/32;
residue_Value=x%32;
bit_set(Slave_adr[quotient_Value],residue_Value); //更新Slave_adr[];
}
//输入参数:x为从机号码;
void Slave_Address_clear_bit(unsigned char *buff)
{ unsigned char quotient_Value; //用来放商值;
unsigned char residue_Value; //用来放余数;
unsigned char x;
x=atoi(buff);
quotient_Value=x/32;
residue_Value=x%32;
bit_clear(Slave_adr[quotient_Value],residue_Value); //更新Slave_adr[];
}
//输入参数:x为从机号码;
bit Slave_Address_test_bit(unsigned char *buff)
{ unsigned char quotient_Value; //用来放商值;
unsigned char residue_Value; //用来放余数;
unsigned char x;
x=atoi(buff);
bit temp_bit;
quotient_Value=x/32;
residue_Value=x%32;
temp_bit=bit_test(Slave_adr[quotient_Value],residue_Value);
return(temp_bit);
}
//函数功能:将Slave_adr[]中的数据转换为16进制ASCii码,保存到Slave_Send_adr[]中
void send()
{ signed char i;
unsigned char temp_array[5];
int temp;
memset(Slave_Send_adr,'\0',73);
for(i=7;i>=0;i--)
{ memset(temp_array,'\0',5);
temp=(int)(Slave_adr[i]>>4);
sprintf(temp_array,"%Lx",temp); //将高16位转换为16进制ASCii码;
strcat(Slave_Send_adr,temp_array);
temp=(int)Slave_adr[i];
sprintf(temp_array,"%Lx",temp); //将低16位转换为16进制ASCii码;
strcat(Slave_Send_adr,temp_array);
memset(temp_array,'\0',5);
strcpy(temp_array,";")
strcat(Slave_Send_adr,temp_array);
}
}
如果麻烦就只翻译
unsigned char32 Slave_adr[8];
unsigned char32 Slave_Send_adr[73];

和这三个函数
void bit_set(int32 x,int y)
void Slave_Address_set_bit(unsigned char *buff)
void send()

查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1601条经验 获得超6个赞

//char32不清楚什么类型,就当INt32了

Int32[] Slave_adr = new Int32[8];
Int32[] Slave_Send_adr = new Int32[73];
void bit_set(Int32 x, int y)
{
Int32 temp;
temp = 1;
temp = temp << y;
x = x | temp;
}
void Slave_Address_set_bit(byte[] buff)
{
char quotient_Value; //用来放商值;
char residue_Value; //用来放余数;
char x;
x = BitConverter.ToChar(buff, 0);
quotient_Value = x / 32;
residue_Value = x % 32;
bit_set(Slave_adr[quotient_Value], residue_Value); //更新Slave_adr[];
}

只翻译了这么多,第三个很烦,直接翻译很难。
memset还好,strcat,sprintf,strcpy等等还要翻译
如果知道要实现什么转换,就可以自己要C#写段函数了

查看完整回答
反对 回复 2023-01-15
?
白板的微信

TA贡献1628条经验 获得超3个赞

unsigned char32 这什么类型?没用过,c#中应该用:char就可以。

unsigned char temp_array[5];改为:char[] temp_array = new char[5];
memset(temp_array,'\0',5);就用不到了。

运算符功能基本都是一样的,
void Slave_Address_set_bit(unsigned char *buff)

改为:
void Slave_Address_set_bit(ref char[] buff)

其它没什么了吧 


查看完整回答
反对 回复 2023-01-15

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信