这不是一个真正的编程问题,是否有命令行或Windows工具(Windows 7)来获取文本文件的当前编码?当然我可以写一个小C#应用程序,但我想知道是否有内置的东西?
好吧,所以我听起来不像白痴我会更明确地陈述问题/要求:
NULL如果找不到匹配项.......以及"最快"的意思:
O(n)where n= haystack长度.(但是O(nm)如果它们与更强大的算法组合以给出确定性O(n)结果,则可以使用通常(例如滚动哈希)算法的思想.if (!needle[1])等等)比天真蛮力算法更糟糕,特别是在非常短的针上,这可能是最常见的情况.(无条件的重预处理开销是不好的,因为试图以可能的针头为代价来改善病理针的线性系数.)我目前的实现比glibc实现的双向大约慢10%和8倍(取决于输入).
更新:我目前的最佳算法如下:
strchr.我脑海中留下的重大问题是:
O(m)(其中m是针长)可以用于m<100左右.如果针对针的简单测试可能仅需要线性时间,那么也可以使用最坏情况二次方的算法.奖励积分:
注意:我很清楚那里的大多数算法,而不是它们在实践中的表现.这是一个很好的参考,所以人们不会继续给我作为评论/答案的算法参考:http://www-igm.univ-mlv.fr/~lecroq/string/index.html
我试图仅使用powershell从命令行执行二进制十六进制编辑.使用此剪辑执行十六进制替换已取得部分成功.当123456多次出现并且替换只发生在特定位置时,问题会出现.
注意:剪辑需要此处的功能Convert-ByteArrayToHexString和Convert-HexStringToByteArray功能.
http://www.sans.org/windows-security/2010/02/11/powershell-byte-array-hex-convert
$readin = [System.IO.File]::ReadAllBytes("C:\OldFile.exe");
$hx = Convert-ByteArrayToHexString $readin -width 40 -delimiter "";
$hx = $hx -replace "123456","FFFFFF";
$hx = "0x" + $hx;
$writeout = Convert-HexStringToByteArray $hx;
set-content -value $writeout -encoding byte -path "C:\NewFile.exe";
我们如何在powershell中指定偏移位置来替换这个粗略的-replace命令.