【问题标题】:Decoding reversed mulitline string encoded in base64 format automatically [closed]自动解码以base64格式编码的反向多行字符串[关闭]
【发布时间】:2012-12-01 12:06:06
【问题描述】:

我正在解码下面给出的以 base64 格式编码的反向多行字符串。

LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ= ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg

s = 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg'
s = s.decode('base64', 'strict')

print s[::-1]

通过上述方法,我得到了正确的字符串,但我必须手动更改字符串。

请帮忙。

【问题讨论】:

  • s.decode('base64')[::-1] 到底有什么问题?这是解码这些的唯一方法,真的。
  • @MartijnPieters 如您所见,OP 没有正确执行,您的评论可能应该是一个答案。
  • @InbarRose:您的意思是(无用的)添加'strict'?这不会破坏解码。我不确定 OP 在问什么,真的。
  • 您的示例代码的输出对我来说看起来不错。究竟是什么问题?是不是每次解码字符串都不想写[::-1]?在这种情况下,您应该编写一个 decodeReversedMultiLineString 方法并改用它。
  • 是多行字符串吗?或者它是一个字符串列表?字符串中有换行符吗?做[l.decode('base64')[::-1] for l in s.splitlines()]有多难?

标签: python base64 decoding


【解决方案1】:

来自 OP 的评论:

list = ['LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ=', 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg', 'c25vaXRhY2lmaWNlcHMgOC1QRVAgdGVlbSB0c3VNICl2ICAgIA==', 'Ni4yIG5vaHR5UCBodGl3IGtyb3cgdHN1TSApdmkgICAg', 'c2VsdWRvbSByZWh0byB5YiBlbGJhdHJvcG1pIGViIGRsdW9ocyBzc2FsQyApaWlpICAgIA==']
s = ''.join(list)
s = s.decode('base64', 'strict')
print (s[::-1])

join 操作将所有字符串连接在一起,但只翻译第一个字符串。这是因为,在解码 base 64 字符串时,字符串中第一个或两个 = 字符之后的所有内容都将被忽略。不是加入,而是迭代:

list = ['LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ=', 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg', 'c25vaXRhY2lmaWNlcHMgOC1QRVAgdGVlbSB0c3VNICl2ICAgIA==', 'Ni4yIG5vaHR5UCBodGl3IGtyb3cgdHN1TSApdmkgICAg', 'c2VsdWRvbSByZWh0byB5YiBlbGJhdHJvcG1pIGViIGRsdW9ocyBzc2FsQyApaWlpICAgIA==']
for s in list:
    s = s.decode('base64', 'strict')
    print (s[::-1])

或者使用列表推导。

list = ['LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ=', 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg', 'c25vaXRhY2lmaWNlcHMgOC1QRVAgdGVlbSB0c3VNICl2ICAgIA==', 'Ni4yIG5vaHR5UCBodGl3IGtyb3cgdHN1TSApdmkgICAg', 'c2VsdWRvbSByZWh0byB5YiBlbGJhdHJvcG1pIGViIGRsdW9ocyBzc2FsQyApaWlpICAgIA==']
print "\n".join(s.decode('base64')[::-1] for s in list)

输出:

4. Describe the concept of denormalisation on high traffic websites. Feel free to use examples.
    vi) Must be in one file
    v) Must meet PEP-8 specifications
    iv) Must work with Python 2.6
    iii) Class should be importable by other modules

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2015-12-26
    • 2021-10-27
    相关资源
    最近更新 更多