Visual Studio / C# - 大写所有十六进制int文字?

时间:2017-09-30 18:51:27

标签: c# vb.net visual-studio hex literals

最近,我开始使用SharpDevelop中的语言转换操作将一个大型项目从VB.net转换为C#,以获得一些先发优势。由于某种原因,转换器坚持采用所有大写的十六进制int文字:

&HDC8C60

并将它们设为小写:

0xdc8c60

我想将所有这些转换为大写,就像之前一样:

0xDC8C60

问题在于此项目中有数百个这样的文字。这是因为项目主要关注内存修改并将x86字节码注入一个特定的进程,并引用了许多特定的偏移量和值。因此,我想找到一种方法一次性全部利用

我在Visual Studio的编辑器设置中随处可见,我浏览了所有Visual Studio的Edit菜单命令,我已经搜索了Google和Stack Overflow。我所能找到的只是询问如何大写格式化十六进制字符串的问题。

如果我必须使用Visual Studio以外的程序,只要该程序是免费的,我就可以同时使用多个源文件。

1 个答案:

答案 0 :(得分:0)

你可以这样做,并读取你的类并将字符串传递给方法,将所有小写文字转换为大写:

public void MD5(BufferedInputStream in, Key pubKey) throws Exception{
    Mac md = Mac.getInstance("HmacMD5");
    md.init(pubKey);
    byte[] contents = new byte[1024];
    int readSize;
    while ((readSize = in.read(contents)) != -1) {
        md.update(contents, 0, readSize);
    }
    byte[] hashValue = md.doFinal();
}

您可以像以下一样使用它:

public static String Convert(String input) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < input.Length; i++) {
        if (i + 2 >= input.Length) {
            sb.Append(input[i]);
            break;
        }
        if (input[i] != '=' && input[i + 1] != '0' && (input[i + 2] != 'x' || input[i + 2] != 'X'))
        {
            sb.Append(input[i]);
        }
        else {
            String temp = String.Empty;
            while (input[i] != ';' && i < input.Length) {
                temp += char.ToUpper(input[i]);
                i++;
            }
            sb.Append(temp).Append(input[i]);
        }
    }
    return sb.ToString();
}

然后保存。