2009-06-15 52 views

回答

1

我不太確定你想要什麼,但如果你想零的第8位,它可以這樣做:

character = character & ~(1 << 7) 
+0

「x&= y」也被支持。 – Constantin 2009-06-15 07:06:22

+0

僅當「字符」不是字符時,否則TypeError:不支持的操作數類型爲&:'str'和'int'。 「字符」必須是整數。 – mhawke 2009-06-15 07:18:42

1

這裏有一種方法:

import array 

mask = ~(1 << 7) 

def convert(koistring): 
    bytes = array.array('B', koistring) 
    for i in range(len(bytes)): 
     bytes[i] &= mask 

    return bytes.tostring() 

test = u'Русский Текст'.encode('koi8-r') 
print convert(test) # rUSSKIJ tEKST 

我不知道是否Python提供一個更清潔的方式做這樣的操作:)

2

假設S的是KOI8-R編碼字符串,你可以試試這個:

>>> s = u'Код Обмена Информацией, 8 бит'.encode('koi8-r') 
>>> s 
>>> '\xeb\xcf\xc4 \xef\xc2\xcd\xc5\xce\xc1 \xe9\xce\xc6\xcf\xd2\xcd\xc1\xc3\xc9\xc5\xca, 8 \xc2\xc9\xd4' 

>>> print ''.join([chr(ord(c) & 0x7F) for c in s]) 
>>> kOD oBMENA iNFORMACIEJ, 8 BIT 

第8位被剝去(ord(c) & 0x7F)