按字节反转字符串
做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时 正好也取完所有字符串了
这样就能反转所有字符串了
最后输出结果

按字节反转字符串技巧
本文介绍了一种按字节反转字符串的方法,并提供了一个简单的Python脚本来实现这一过程。通过从字符串尾部开始每次取两个字符的方式,可以有效地将整个字符串按照字节进行反转。
2932

被折叠的 条评论
为什么被折叠?



