javascript 什么字节串在一元取反时产生“X”?

osh3o9ms  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(84)

我想这样做:

~b"???"

它会产生b"X"。我如何找到要使用的字节序列?任何语言都可以,所以用python+js标记。

vql8enpb

vql8enpb1#

你可以用XOR运算来实现,下面是Python中的一个例子:

def invert_byte_seq(seq):
    if isinstance(seq, str):
        seq = bytes(seq, 'utf-8')
     
    ret_str = ''.join([chr(byte ^ 0x7F) for byte in seq])
    return bytes(ret_str, 'utf-8'), ret_str
     

>>> invert_byte_seq('???')
    (b'@@@', '@@@')

然后,为了测试,我们可以交换“X”两次,应该会得到相同的结果:

>>> byte_str, _ = invert_byte_seq('X')
>>> invert_byte_seq(byte_str)[1]
    'X'

我将0xFF改为0x7F,以便更好地表示ASCII表。您可以根据您的编码更改该值。

相关问题