首页 > 解决方案 > 为什么我的 unicode 字符串的最后一部分被吃掉了?

问题描述

我正在尝试将 ascii 生成为 javascript unicode,我可以生成它,但在检查了某些方面之后。我注意到我的程序正在吃字符串的最后一部分。我怎样才能解决这个问题?

import binascii

content = 'string\n'

first_byte = ""
second_byte = ""
shellcode = ""
flag = 0
for b in content:
    if flag == 0:
        shellcode += "%u"
        first_byte = binascii.hexlify(b)
        flag += 1
    else:
        second_byte = binascii.hexlify(b)
        shellcode += second_byte
        shellcode += first_byte
        flag = 0

print shellcode

我的脚本输出

%u6c62%u6361%u6c6b%u6965%u7574%u

想要的,但通常是任何字符串

%u6c62%u6361%u6c6b%u6965%u7574%u0a73

标签: pythonpython-2.x

解决方案


您正在使用该变量flag将输入分成两部分。偶数字符被保存first_byte,当你得到奇数字符时,你将两个都保存到shellcode。在循环结束时first_byte,如果字符数是偶数,则您有一个尚未输出的字符。


推荐阅读