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

麻烦介绍下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贡献1864条经验 获得超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贡献1883条经验 获得超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
  • 2 回答
  • 0 关注
  • 136 浏览

添加回答

举报

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