c⼀c++字符串加密 大家帮帮忙哦!

2025-03-23 16:32:02
推荐回答(5个)
回答(1):

#include
#include
#include
void str_bitset(char *buf,int len,int n);
int main()
{
char a[]="0fasdf253253q4yesfa325q23ra235a";
int l=strlen(a);
puts(a);
str_bitset(a,l,1);
puts(a);
str_bitset(a,l,-1);
puts(a);
return 0;
}
void str_bitset(char *buf,int len,int n)
{
char t,*p;
int l;
if(len<=0)return;
if(!n)return;
l=len*8;
if(n/l)str_bitset(buf,len,n%l);
else if(n<0)str_bitset(buf,len,l+n);
else if(n>=8){
p=buf;t=*p;l=len;
while(--l)*p=*++p;
*p=t;
str_bitset(buf,len,n-8);
}else{
p=buf;l=len;
t=*p>>7&0x1;
while(--l)*p=*p<<1|*(++p)>>7&0x1;
*p=*p<<1|t;
str_bitset(buf,len,n-1);
}
}

回答(2):

#include
#include
void str_bitset(char *str,int len,int n);
int main()
{
char str[4] = "abc";
printf("Original string is:\n%s\n\n",str);
str_bitset(str,3,1);
printf("New string is:\n%s\n\n",str);
return 0;
}
void str_bitset(char *str,int len,int n)
{
char *p;
char *q;
char *tmp;
tmp = (char *)malloc(len);
p = str;
q = tmp;
while(*p)
{
*q = *p;
p++;
q++;
}
q = tmp;
while(q {
*q >>= 8-n;
q++;
}
p = str;
while(*p)
{
*p <<= n;
p++;
}
p = str;
q = tmp+1;
while(p {
*p |= *q;
p++;
q++;
}
*p |= *tmp;
free(tmp);
}

回答(3):

很简单的啊~再设一个数组就行啦啊~一个一个复杂进去啊

回答(4):

不需要添加麻烦

回答(5):

我怎么觉得举的例子跟描述的算法不符啊...