处理字符串的时候假如出现结束符该怎么办

Jobernowl 2015-09-18 05:22:07
如题 我现在搞了一个字符处理程序 粗略来说就是加密字符吧 处理字符的原理是
首先把字符搞成一个 unsigned char[] 数组 然后遍历数组 作相应的处理(比如:data[i]^=1) 问题来了 经过处理后 该数组中出现了相当多的
'\0' 我用的是c 请问这样子该如何是好
...全文
161 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
NexTor 2015-09-18
  • 打赏
  • 举报
回复
引用 9 楼 sasuke38 的回复:
[quote=引用 8 楼 NexTor 的回复:] 我的思路是既然data[i] == s会出现0,而0是不需要的,那么就用0的加密的结果来替换掉。 解密的时候第一次解密肯定是0,而0对你来说肯定是不用的,所以出来0就说明是data[i] == s的情况。 前提是\0是不会被用到加密中的。
你的意思是当 data[i] == s 的时候 就 data[i] == 0^s 是吧 0^s的结果就是s 没什么变化 于是我直接跳过就行了 和我的方式是一样的 加密的内容是字符串 所以中间肯定没有 \0[/quote] 是的,我想到的最简单的方法就是这样吧,解密的话如果data[i]^s的结果是0的话,就说明加密前的data[i]应该就是s值,因为加密前的字符串中没有\0 不知道这样的方法可不可行
Jobernowl 2015-09-18
  • 打赏
  • 举报
回复
引用 8 楼 NexTor 的回复:
我的思路是既然data[i] == s会出现0,而0是不需要的,那么就用0的加密的结果来替换掉。 解密的时候第一次解密肯定是0,而0对你来说肯定是不用的,所以出来0就说明是data[i] == s的情况。 前提是\0是不会被用到加密中的。
你的意思是当 data[i] == s 的时候 就 data[i] == 0^s 是吧 0^s的结果就是s 没什么变化 于是我直接跳过就行了 和我的方式是一样的 加密的内容是字符串 所以中间肯定没有 \0
NexTor 2015-09-18
  • 打赏
  • 举报
回复
我的思路是既然data[i] == s会出现0,而0是不需要的,那么就用0的加密的结果来替换掉。 解密的时候第一次解密肯定是0,而0对你来说肯定是不用的,所以出来0就说明是data[i] == s的情况。 前提是\0是不会被用到加密中的。
NexTor 2015-09-18
  • 打赏
  • 举报
回复
如果data[i] == s的情况,那你就再做一次^操作,得出的结果就是s 当解密的时候,做第一次解密的时候会得出0,如果是0的话就再做一次解密操作,应该能得到原值吧
Jobernowl 2015-09-18
  • 打赏
  • 举报
回复
引用 5 楼 q3733353520 的回复:
该怎么处理能说一下么 由于过程是可逆的 所以我觉得比较简单的做法是避免出现相等的情况 至于当出现相等的时候如果做特别的处理那么反过来操作的时候也要有对应的处理 这点对我来说更难一些
这个只是加一种情况而已,解密的时候也加一种情况就OK了,没有你想的那么难[/quote] 该怎么说呢 unsigned char 的范围是0~255吧 你说处理一下 但是毕竟数据类型是 unsigned char 不过你如何处理他都是0~255 假如 data[i]==s 我把data[i]=8 那么解密的时候我该怎么做? 难道是判断data[i]==8不成 这个显然不行了 该怎么处理你又不说出来 我这边不会搞啊 毕竟我是新手 现在我的处理方式是 if(data[i]==s){continue;} 也就是什么都不处理这个位置的内容 那么我就结贴吧
  • 打赏
  • 举报
回复
引用 4 楼 sasuke38 的回复:
[quote=引用 3 楼 q3733353520 的回复:] 那么,你也可以判断当data[i] == s的时候,作别的处理
该怎么处理能说一下么 由于过程是可逆的 所以我觉得比较简单的做法是避免出现相等的情况 至于当出现相等的时候如果做特别的处理那么反过来操作的时候也要有对应的处理 这点对我来说更难一些 [/quote] 这个只是加一种情况而已,解密的时候也加一种情况就OK了,没有你想的那么难
Jobernowl 2015-09-18
  • 打赏
  • 举报
回复
引用 3 楼 q3733353520 的回复:
那么,你也可以判断当data[i] == s的时候,作别的处理
该怎么处理能说一下么 由于过程是可逆的 所以我觉得比较简单的做法是避免出现相等的情况 至于当出现相等的时候如果做特别的处理那么反过来操作的时候也要有对应的处理 这点对我来说更难一些
  • 打赏
  • 举报
回复
判断,如果结果是'\0',再另外处理,直到不为'\0'
引用 2 楼 sasuke38 的回复:
[quote=引用 1 楼 q3733353520 的回复:] 判断,如果结果是'\0',再另外处理,直到不为'\0'
我这个是处理字符串的 原理是 data[i]^=s s是在一个 unsigned char数组中获取 假如我的data内容超多的话 总有碰到 data[i]=s的时候 当data^s=0 的时候该怎么处理呢 处理字符肯定是要可逆的 既然做相应的处理 到时候反过来处理的时候我又如何判断呢[/quote] 那么,你也可以判断当data[i] == s的时候,作别的处理
Jobernowl 2015-09-18
  • 打赏
  • 举报
回复
引用 1 楼 q3733353520 的回复:
判断,如果结果是'\0',再另外处理,直到不为'\0'
我这个是处理字符串的 原理是 data[i]^=s s是在一个 unsigned char数组中获取 假如我的data内容超多的话 总有碰到 data[i]=s的时候 当data^s=0 的时候该怎么处理呢 处理字符肯定是要可逆的 既然做相应的处理 到时候反过来处理的时候我又如何判断呢
  • 打赏
  • 举报
回复
判断,如果结果是'\0',再另外处理,直到不为'\0'

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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