private static uint GetStrCode32(string text)
const ulong seed0 = 0x9ae16a3b2f90404f;
ulong seed1 = text.Length > 0 ? (uint)((text[0]) << 16) + (uint)text.Length : 0;
return (uint)(CityHash.CityHash.CityHash64WithSeeds(text + "\0", seed0, seed1) & 0xFFFFFFFF);
public static void Main(string[] args)
const string TestStr = "announce_target_extract";
uint testStrCode32 = GetStrCode32(TestStr);
Console.WriteLine(TestStr + "\t" + testStrCode32);
if (args == null|| args.Length != 1)
Console.WriteLine("Fox.StrCode32 v0.1 by Atvaark\n" +
"Usage: Fox.StrCode32 file_path");
var lines = File.ReadAllLines(args[0]);
StringBuilder outputLineBuilder = new StringBuilder();
foreach (var line in lines)
uint lineStrCode32 = GetStrCode32(line);
outputLineBuilder.AppendLine(string.Format("{0}\t{1}", line, lineStrCode32));
var outFilePath = Path.Combine(
Path.GetDirectoryName(filePath),
Path.GetFileNameWithoutExtension(filePath) + "_result" + Path.GetExtension(filePath));
File.WriteAllText(outFilePath, outputLineBuilder.ToString());