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

Visual Studio/C#-将所有十六进制int文本大写?,c#,vb.net,visual-studio,hex,literals,C#,Vb.net,Visual Studio,Hex,Literals,最近,我开始使用SharpDevelop中的语言转换操作将一个大型项目从VB.net转换为C#,以取得一点领先。出于某种原因,转换器坚持采用所有大写的十六进制int文本: &HDC8C60 并使其小写: 0xdc8c60 我想像以前一样,将它们全部转换为大写: 0xDC8C60 问题是,这个项目中有数百个这样的文本。这是因为该项目主要关注内存修改和将x86字节码注入到一个特定进程中,并引用了许多特定偏移量和值。正因为如此,我想找到一种方法,一次将它们全部资本化 我查看了Visual

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

&HDC8C60
并使其小写:

0xdc8c60
我想像以前一样,将它们全部转换为大写:

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

我查看了VisualStudio的编辑器设置,查看了所有VisualStudio的
Edit
菜单命令,搜索了Google和Stack Overflow。我所能找到的只是关于如何大写格式化的十六进制字符串的问题


如果我必须使用Visual Studio以外的程序,只要该程序是免费的,并且我可以同时对多个源文件执行此操作,那就没有问题。

您可以执行类似操作,读取类并将字符串传递给方法,以将所有小写文字转换为大写:

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();
}

然后保存它。

您可以执行类似操作,读取类并将字符串传递给方法以将所有小写文本转换为大写:

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();
}

然后保存它。

您可以使用linqpad(免费,但付费版很好)。只需遍历所有的.cs文件并查找文本并进行更改。Linqpad在这里有什么帮助?我怀疑您可以使用Roslyn来完成这项工作,尽管这需要一些努力。使用控制台应用程序读取文件,并且每次遇到0x[a-f0-9]+时都要执行一个到上的操作,怎么样?可以将其作为预构建step@Transcendent:我的意思是Roslyn是一个编译器和代码编辑器API。它允许你加载一个项目,让编译器解析它,找到所有十六进制文字标记,重写它们,然后保存源文件。只需遍历所有的.cs文件并查找文本并进行更改。Linqpad在这里有什么帮助?我怀疑您可以使用Roslyn来完成这项工作,尽管这需要一些努力。使用控制台应用程序读取文件,并且每次遇到0x[a-f0-9]+时都要执行一个到上的操作,怎么样?可以将其作为预构建step@Transcendent:我的意思是Roslyn是一个编译器和代码编辑器API。它允许您加载一个项目,让编译器解析它,找到所有十六进制文字标记,重写它们,然后保存源文件。