按字节反转字符串
做CTF杂项题目时候 碰到一题文件数据被反转的情况 文件头变成了文件尾
于是乎写了个脚本反转回来
代码如下
s="" #要反转的字符串
c=""
i=len(s)-1
while(i>=0):
c=c+s[i-1]+s[i] #每两位反转一次
i=i-2
print(c)
说一下大概的思路
首先第一个变量s中存储要反转的字符串
c用来存储最后输出的字符串
我的思路是从尾部开始取字符 每次取两个字符 这样就能按照字节反转字符串了
既然要从尾部开始取 那就先获取一下字符串的长度
于是乎需要用到 len() 函数 用来计算字符串长度
i=len(s)-1
这里为什么要减去1呢 因为数组索引的长度是从0开始的 而字符串长度计算是从1开始的 二者之间会相差1 所以要减去1
例子:
st="504749"
print(len(st))
print(st[0])
print(st[1])
输出结果:
可以明显的看到 索引是从0位开始的
while(i>=0):
c=c+s[i-1]+s[i] #每两位反转一次
i=i-2
print(c)
因为要先取倒数第二位 再取倒数第一位
所以应该是
s[i-1]+s[i]
每次取完之后 i-2 因为i一开始的位置是在最后一字节的最后一位 -2 之后就可以跳到下一个字节的最后一位
这里用while循环 只有当i小于0时才会跳出循环 而当i小于0时 正好也取完所有字符串了
这样就能反转所有字符串了
最后输出结果