我需要在大文件上用$ 1021多项式计算Crc16校验和,下面是我当前的实现,但是在大文件上它相当慢(例如90 MB文件大约需要9秒).
所以我的问题是如何改进我当前的实现(使其更快),我用Google搜索并查看了一些实现表查找的示例但我的问题是我不明白如何修改它们以包含多项式(可能是我的数学失败了).
{ based on http://miscel.dk/MiscEl/CRCcalculations.html }
function Crc16(const Buffer: PByte; const BufSize: Int64;
const Polynom: WORD=$1021; const Seed: WORD=0): Word;
var
i,j: Integer;
begin
Result := Seed;
for i:=0 to BufSize-1 do
begin
Result := Result xor (Buffer[i] shl 8);
for j:=0 to 7 do begin
if (Result and $8000) <> 0 then
Result := (Result shl 1) xor Polynom
else Result := Result shl 1;
end;
end;
Result := Result and $FFFF;
end;
Run Code Online (Sandbox Code Playgroud) 有没有一种优雅的方法可以将环境变量从Process Explorer复制到Process的剪贴板?我试图比较两个C++编译过程,并想看看环境变量是如何不同的.似乎我无法复制文本,然后将其粘贴到视觉上进行比较.
注意我宁愿坚持使用PE而不是使用多种工具,但如果使用其他工具是唯一的选择,请随时提出建议.
同时将其标记为C++,期望从C++开发人员/调试者的角度来看解决方案,包括使用Visual C++
这是我上一个问题的后续内容,我正在使用Senthil Kumaran建议的2to3工具
它似乎运作良好,但它没有拿起这部分:
raise LexError,("%s:%d: Rule '%s' returned an unknown token type '%s'" % (
func.func_code.co_filename, func.func_code.co_firstlineno,
func.__name__, newtok.type),lexdata[lexpos:])
Run Code Online (Sandbox Code Playgroud)
这在3.2中应该是什么样的?
编辑:从下面的答案的变化是好的,2to3现在似乎工作正常.在setup.py构建中,我现在得到以下错误,请参阅我的新问题.
我试图让pywbem在Python 3.2中工作(它在2.6中运行正常)但是在mof_compiler.py中的这部分代码上构建失败:
File "pywbem-0.7.0\mof_compiler.py", line 1341
print s
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
它是一个宏,定义如下:
def _print_logger(s):
print s
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这是无效的,请解释如何在Python 3.2中做同样的事情.
注意:我对Python几乎没有经验.
PS:我已经对3.2的代码做了一些小改动,比如改变
except CIMError, ce:
Run Code Online (Sandbox Code Playgroud)
至
except CIMError as ce:
Run Code Online (Sandbox Code Playgroud)
根据Lennart Regebro的回答,我发现了其他一些变化(将它们置于此处,因为它可能对其他人有用).
exec "import %s as lextab" % tabfile -> exec ("import %s as lextab" % tabfile)
raise ValueError,"Expected a string" -> raise ValueError("Expected a string")
Run Code Online (Sandbox Code Playgroud)