C# 替换二进制文件中的 HEX
我有一个二进制文件,其中有几个值应该更改. 更确切地说,在文件的两个部分中,一开始,有两个十六进制值 66 73 69 6D 35 2E 36 39 什么应该更改为 4D 53 57 49 4E 34 2E 31 我该如何做到这一点,并尽快?我要到了将整个文件读为字节[]数组的地步,但是该类没有搜索或替换功能. 解决方案 这是我写的一种方法,您可以用它来查找byte[]中的位置. /// /// Searches the current array for a specified subarray and returns the index /// of the first occurrence, or -1 if not found. /// /// Array in which to search for the /// subarray. //
0 2024-04-21
编程技术问答社区
六进制增量/循环到FFF
我有一个字符串,其中包含一个十六进制的数字,我想增加十六进制的数字,直到达到最大数字(FFF).我如何循环遍历,以便在开始六角形和FFF之间获得所有数字? 我试图将字符阵列中的字符串转换,但之后被卡住了. string stringHex = "7A"; string binaryval = ""; binaryval = Convert.ToString(Convert.ToInt32(stringHex, 16), 2); int numOfBytes = binaryval.Length / 8; byte[] bytes = new byte[numOfBytes]; for (int i = 0; i
0 2024-04-21
编程技术问答社区
在C#中使用FileStream打开一个文件
我正在尝试打开一个我计划转换为十六进制的二进制文件,但是我遇到了通过FileStream读取文件的问题, private void button1_Click(object sender, EventArgs e) { openFD.Title = "Insert a BIN file"; openFD.InitialDirectory = "C:"; // Chooses the default location to open the file openFD.FileName = " "; // Iniitalizes the File name openFD.Filter = "Binary File|*.bin|Text File|*.txt"; // FIlters the types of files allowed to by chosen if (openFD.ShowDialog() != DialogResult.Can
2 2024-04-20
编程技术问答社区
在C#中把单个十六进制字符转换为其字节值
这将将1个十六进制字符转换为其整数值,但需要构造一个(sub)字符串. Convert.ToInt32(serializedString.Substring(0,1), 16); .net是否具有将单个十六进制字符转换为其字节(或int,无关紧要的)值的内置方法,该值不涉及创建新字符串? 解决方案 int value = "0123456789ABCDEF".IndexOf(char.ToUpper(sourceString[index])); 甚至更快(减法与数组搜索),但没有检查不良输入: int HexToInt(char hexChar) { hexChar = char.ToUpper(hexChar); // may not be necessary return (int)hexChar
0 2024-04-20
编程技术问答社区
字符串格式和十六进制字符
有人可以解释为什么这不起作用: string f = string.Format("\\x{0:00}{{0}}", 5); string o = string.Format(f, "INSERT TEXT"); System.Diagnostics.Debug.WriteLine(f + " : " + o); 输出是: \x05{0} : \x05INSERT TEXT 为什么\ x05无法更换? 解决方案 应以格式指定符设置参数的格式,否则您只是插入字面的" \ x".这样: // "5" as a lowercase 2-digit hex string f = string.Format("{0:x2}{{0}}", 5); 不要混淆您如何将源代码中的十六进制文字与您在格式的字符串中打印的内容,它们是不同的东西. 其他解决方案 要在字符串中放一个字面的字符,只需确保编译器知道这是一个char. string f = strin
0 2024-04-19
编程技术问答社区
从一个隐含的无符号十六进制字符串构造一个BigInteger的正确方法是什么?
我遇到了一个问题,因为我有一个隐含的未签名的十六进制数字作为字符串,从用户输入中提供,需要将其转换为BigInteger. . 多亏了A BigInteger设置最高级位(0x8/1000b)的任何输入的签名性质(0x8/1000b),结果数被视为负.但是,不能通过简单地检查符号位并乘以-1或获得由于一个人的补充而获得绝对值来解决此问题,这将不尊重基础符号,例如将所有值处理为a -1. 如下所示,是一些示例输入/输出 var style = NumberStyles.HexNumber | NumberStyles.AllowHexSpecifier; BigInteger.TryParse("6", style) == 6 // 0110 bin BigInteger.TryParse("8", style) == -8 // 1000 bin BigInteger.TryParse("9", style) == -7 // 1001 bin BigInte
0 2024-04-19
编程技术问答社区
两个Hex字节数组的XOR函数
我试图执行独家或两个字节阵列,并将结果作为十六进制字符串返回.我已经将两个字节数组转换为它们相应的二进制字符串.每个字节都有位,因为它具有8个字节. byte[] key = { 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18 }; byte[] PAN = { 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23 }; 到目前为止,我已经使用了一种将字节数组转换为相应的二进制字符串值的方法,例如" 1010101011".但是,当我执行以下方法获取XOR时,我会带着一连串的笑脸返回,这可能是一些特殊的ASCII角色. 但是,我没有任何想法.我当时想将二进制字符串转换为整数,但这不是一个好的解决方案,因为它不适合整数. 你有什么想法吗?可能有一些示例代码? public static string exclusiveOR(string string_1, string s
0 2024-04-19
编程技术问答社区
计算热力图的颜色
我正在制作由HTML表组成的热图.该表包含 n 细胞,具有最低值和A 最高值(最高始终高于最低).每个单元都有单元格值.所有这些值是ints. 最低值的细胞是浅蓝色的,缩放到最高值的细胞为深红色的点.有关理想范围,请参见下面的梯度: 要计算每个单个单元的十六进制颜色值,我查看表中的最低和最高值,以及单元的 total 值,将它们传递到返回RGB十六进制的方法中,准备与HTML的 background-color 样式一起使用. 这是到目前为止的方法: public string ConvertTotalToRgb(int low, int high, int cell) { int range = high - low; int main = 255 * cell/ range; string hexR = main.ToString("X2"); int flip = 255 * (1 - (cell/ range));
0 2024-04-19
编程技术问答社区
如何将十六进制字符串转换为十进制值
我试图将十六进制字符串转换为十进制值,但这并没有给我预期的结果 我尝试了convert.toint32(hexa,16),convert.todecimal(hexa). 我的字符串看起来像这样: 1 12 94 201 198 然后我将其转换为: 10c5ec9c6 我知道结果是: 4502505926 我需要你的帮助 非常感谢您的帮助:) 解决方案 System.Decimal(C#decimal)类型是浮点类型,不允许NumberStyles.HexNumber specifier. System.Int32(C#int)类型的允许值的范围不足以进行转换.但是您可以使用System.Int64(C#long)进行此转换: string s = "10C5EC9C6"; long n = Int64.Parse(s, System.Globalization.NumberStyles.HexNumber); 'n =
0 2024-04-18
编程技术问答社区
如何获得十六进制02的STX字符
我有一个正在尝试通过插座连接的设备,根据手册,我需要" Hex 02的STX字符". 如何使用C#? 进行此操作 解决方案 您可以使用Unicode字符逃脱:\u0002 其他解决方案 只是对Geoffm答案的评论(我没有足够的积分来评论正确的方式). 您绝对不应该仅使用两个数字来嵌入STX(或其他字符). 如果下一个字符(" \ x02"之后)是有效的十六进制数字,那也将被解析,这将是一团糟. string s1 = "\x02End"; string s2 = "\x02" + "End"; string s3 = "\x0002End"; 在这里,s1等于" .nd",因为2e是点字符,而s2和s3等于stx +" end". 其他解决方案 将Integer的值2铸成char: char cChar = (char)2;
0 2024-04-18
编程技术问答社区
了解C#中的十六进制和字节
我似乎缺乏对C#计算和使用六角形和字节值的资金理解(或一般编程). 我想知道如何从字符串和RGB颜色等来源计算十六进制值和字节(0x-)(例如,我如何确定R255 G0 B0的0x代码是什么?) 为什么我们使用诸如FF之类的东西,是为了补偿基本10系统以获取大约10个数字吗? 解决方案 十六进制是基本16,因此我们从0到9的数量计数,而是从0到F.我们通常以0x>前缀十六进制常数.因此, Hex Dec ------------- 0x00 = 0 0x09 = 9 0x0A = 10 0x0F = 15 0x10 = 16 0x200 = 512 a字节是计算机上值的典型存储单元,在大多数现代系统上,字节包含8位.请注意,bit实际上是指binary digit,因此,从中,我们收集了一个字节的最大值为11111111二进制.那是0xff六角形,或255个小数.因此,一个字节可以由两个十六进制字符表示.然后,一个典型的4字节
0 2024-04-18
编程技术问答社区
在C#中使用IO读取十六进制
我是C#从Java迁移的新手.我正在尝试使用io中的IO阅读十六进制.当我阅读第一个字节时,我没有得到我在十六进制编辑器中看到的内容. 我正在使用 StreamReader reader = new StreamReader(fileDirectory); int hexIn; String hex; for (int i = 0; (hexIn = reader.Read()) != -1; i++){ hex = Convert.ToString(hexIn, 16); } 在Java中我使用了 FileInputStream fis = new FileInputStream(file); long length = file.length(); int hexIn; String hex = ""; for(int i = 0; (hexIn = fis.read()) != -1; i++){ String s = Integer.
0 2024-04-18
编程技术问答社区
为什么Guid.ToString("n")与从同一guid的字节数组生成的十六进制字符串不一样?
考虑以下单元测试: [TestMethod] public void TestByteToString() { var guid = new Guid("61772f3ae5de5f4a8577eb1003c5c054"); var guidString = guid.ToString("n"); var byteString = ToHexString(guid.ToByteArray()); Assert.AreEqual(guidString, byteString); } private String ToHexString(Byte[] bytes) { var hex = new StringBuilder(bytes.Length * 2); foreach(var b in bytes) {
0 2024-04-18
编程技术问答社区
大整数到十六进制
快速问题... 我有一个愚蠢的长BigInteger我想将其写入文件作为十六进制字符串. 我知道java提供了这样做的.toString(16)方法,但是我在c#中找不到同等的方法. 我使用的是.net 4.0. 谢谢 解决方案 使用.ToString("X")或.ToString("x")取决于您喜欢的情况. 其他解决方案 您不能使用yourBI.ToString("X")? dd268260.aspx 其他解决方案 yourBI.ToString("x17").Substring(1) // If you need 16 length
0 2024-04-18
编程技术问答社区
如何将16进制转换为RGB?
我试图用它来弄清颜色是颜色是浅色还是深色 评估十六进制值是黑暗还是光一个> 现在.它需要A int float calcLuminance(int rgb) { int r = (rgb & 0xff0000) >> 16; int g = (rgb & 0xff00) >> 8; int b = (rgb & 0xff); return (r*0.299f + g*0.587f + b*0.114f) / 256; } 我有十六进制颜色. 我试图这样做 var color = System.Drawing.ColorTranslator.FromHtml("#FFFFFF"); int rgb = color.R + color.G + color.B; var a = calcLuminance(rgb); 我得到了0.11725,我认为它必须在0-256或类似的范围内.
0 2024-04-17
编程技术问答社区
将颜色翻译成十六进制 c# 。
我的转化颜色为十六进制有问题.红色下划线低于System.Drawing.ColorTranslator.FromHtml("paint")和rect.Color; 变量paint是静态的 - 暂时. 我认为,问题是在变量类型的public System.Drawing.SolidBrush Color at Rect class 中 List rects = new List(); rects.Add(new Rect() { Width = x, Height = y, Left = w, Top = h, Fill = (System.Windows.Media.Brush)(new BrushConverter()).ConvertFromString(paint) });
0 2024-04-17
编程技术问答社区
在C#中进行十六进制操作
在C#? 中对解析/转换/操作的任何提示 特别是我想将十进制INT施放到十六进制,然后作为字符串输出... 解决方案 Int32 decValue = 42; string hexValue = decValue.ToString("X"); Int32 decValue2 = Int32.Parse(hexValue, System.Globalization.NumberStyles.HexNumber); 请参阅此帖子: 如何在十六进制和小数之间转换数字C#?
0 2024-04-17
编程技术问答社区
HEX字符串到中文字符串
我有以下代码可以从十六进制到ASCII. //Hexadecimal to ASCII Convertion private static string hex2ascii(string hexString) { MessageBox.Show(hexString); StringBuilder sb = new StringBuilder(); for (int i = 0; i
0 2024-04-17
编程技术问答社区
如何将十六进制字符串转换为十进制
当我尝试这个时, Decimal m = Decimal.Parse(columns[1], System.Globalization.NumberStyles.AllowHexSpecifier); 我得到了一个参数, 在浮点上不支持Number样式允许Specifier 数据类型. 和列[1] = 4B414D000000011613C3 btw. 我在做什么错,我该如何解决? 解决方案 Decimal是浮点类型,例如Single,Double,因此您不能按标准分析表示字符串,例如 4B414.D000000011613C3eAF //
2 2024-04-16
编程技术问答社区