Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Python中使用二进制运算符。。。转换if(c1>;=";\xc0";c1<;=";\xdf";)_Php_Python - Fatal编程技术网

Php 在Python中使用二进制运算符。。。转换if(c1>;=";\xc0";c1<;=";\xdf";)

Php 在Python中使用二进制运算符。。。转换if(c1>;=";\xc0";c1<;=";\xdf";),php,python,Php,Python,我正在将一个外部文件从PHP转换为Python,它会执行一些技巧,如: if ($c1 >= "\xc0" & $c1 <= "\xdf") [...] $cc1 = (chr(ord($c1) / 64) | "\xc0"); [...] $cc2 = ($c1 & "\x3f") | "\x80"; 如果($c1>=“\xc0”和$c1>>c1=“a” >>>(c1&“\x3f”)|“\x80” 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 (c1&“\

我正在将一个外部文件从PHP转换为Python,它会执行一些技巧,如:

if ($c1 >= "\xc0" & $c1 <= "\xdf")
[...]
$cc1 = (chr(ord($c1) / 64) | "\xc0");
[...]
$cc2 = ($c1 & "\x3f") | "\x80";
如果($c1>=“\xc0”和$c1>>c1=“a”
>>>(c1&“\x3f”)|“\x80”
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
(c1&“\x3f”)|“\x80”
TypeError:&:'str'和'str'的操作数类型不受支持

编辑:实际上,这个PHP类似乎不起作用,所以它也不能满足我的需要。非常感谢您的帮助。

这是一个基本的UTF-8编码函数

c1.encode('utf-8')

请注意,除非您本机使用
unicode
s(为什么不使用?),否则您需要首先从
'latin-1'
解码。

使用
ord
函数获取值,然后使用实际数字进行屏蔽

>>> c1 = "a"
>>> (ord(c1) & 0x3f) | 0x80
161
>>> hex((ord(c1) & 0x3f) | 0x80)
'0xa1'
Python 2.7.3(默认,2012年9月26日21:51:14)
>>>c1='d'
>>>#如果($c1>=“\xc0”和$c1>>ord(c1)>=0xc0和ord(c1)>#$cc1=(chr(ord($c1)/64)|“\xc0”);
... 
>>>chr(作战需求文件(c1)/64 | 0xc0)
“\xc1”
>>>#$cc2=($c1&“\x3f”)|“\x80”;
... 
>>>作战需求文件(c1)和0x3f | 0x80
164
>>> 

第一个
&
即使在PHP代码中也没有多大意义。“forceUTF8”的前提类是很糟糕的。我希望您不要依赖它来代替正确处理字符编码。在正常操作中,不需要这样的代码。实际上,我认为其目的是使用掩码来处理字符字节,所以我认为它是有意义的。我的问题不是“它有意义吗”,而是我不能这样做“整个编码用另一种方式解决了问题”,但“您将如何翻译字符操作,例如提供给Python的三个示例?”。“我必须处理一些损坏的编码,所以我处于‘异常’状态,只是想在依赖其他任何东西之前先检查这个方法,并想从python中执行它……我是指
$c1>=“\xc0”&$c1中的
&
,好的,我必须修复一些损坏的编码,就像这个库指出的:echo encoding::fixUTF8(“FÃÃédÃÃération Camerounaise de Football”)=>FÃdération Camerounaise de Football并想检查一下。是的,可能是第一个&很棘手,因为我不知道PHP以及PHP如何处理位(布尔和布尔)操作。顺便说一句,它有意义,可能与在这里使用&&相同,不是?
>>> c1 = "a"
>>> (ord(c1) & 0x3f) | 0x80
161
>>> hex((ord(c1) & 0x3f) | 0x80)
'0xa1'
Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
>>> c1 = 'd'
>>> # if ($c1 >= "\xc0" & $c1 <= "\xdf")
... 
>>> ord(c1) >= 0xc0 and ord(c1) <= 0xdf
False
>>> # $cc1 = (chr(ord($c1) / 64) | "\xc0");
... 
>>> chr(ord(c1) / 64 | 0xc0)
'\xc1'
>>> # $cc2 = ($c1 & "\x3f") | "\x80";
... 
>>> ord(c1) & 0x3f | 0x80
164
>>>