我的脚本大部分都有效,但输出格式不是我想要的。
input_string = "A156C673017A85C112345678"
步骤(1):将input_string分解为8个字符
A156C673
017A85C1
12345678
步骤(2):反转字符
A156C673 => 73C656A1
017A85C1 => C1857A01
12345678 => 78563412
我希望输出为单个字符串,如下所示:
output_string=73C656A1C1857A0178563412
有人可以帮忙吗?
##########Step(1)break string into 32 bits chunk###########
input_string = "A156C673017A85C112345678"#330F2345"
print (f"original string is {input_string}\n")
step=8
for i in range (0,len(input_string),step):
if i==0:
string_byte_reverse_rev2(input_string[i:step],output_file,1)
print (f'string2b is {input_string[i:i+step]}\n')
else:
string_byte_reverse_rev2(input_string[i:i+step],output_file,1)
print (f'string2b is {input_string[i:i+step]}\n')
##########Step(2)Reverse every 2 characters###########
def string_byte_reverse_rev2(string,output_file,label):
stringrev=[]
for i in range (len(string)-1,-1,-2):
stringrev.append(string[i-1])
stringrev.append(string[i])
print(''.join(stringrev))
答案 0 :(得分:1)
您可以使用列表推导:
def divide(l, n):
return [l[i:i+n] for i in range(0, len(l), n)]
input_string = "A156C673017A85C112345678"
parts = divide(input_string, 8)
stringrev = ''.join(''.join(divide(part, 2)[::-1]) for part in parts)
print(stringrev) # => "73C656A1C1857A0178563412"
答案 1 :(得分:1)
正如我所理解的那样,这就是你所寻找的。 p>
这与你所拥有的相差不远,只是清理了一些东西(不想使用与你想到的完全不同的技术)。
#string reversal in pairs
def string_byte_reverse_rev2(string):
stringrev = ""
for _ in range (0, len(string), 2):
stringrev = string[_ + 1] + stringrev
stringrev = string[_] + stringrev
# print(stringrev)
return stringrev
##########Step(1)break string into 32 bits chunk###########
input_string = "A156C673017A85C112345678"
print (f"original string is {input_string}\n")
step = 8
##########Step(2)Reverse every 2 characters###########
for _ in range (0, len(input_string), step):
string_byte_reverse_rev2(input_string[_ : _ + step])
# print (f'string2b is {input_string[_ : _ + step]}\n')
##########Step(3)Combine into single reversed string##########
output_string = ""
for _ in range (0, len(input_string), step):
output_string += string_byte_reverse_rev2(input_string[_ : _ + step])
print("reversed string is",output_string)
<强>输出:强>
original string is A156C673017A85C112345678
reversed string is 73C656A1C1857A0178563412