在C#中如何将char数组中的十六进制字符转换为int类型
解决十六进制字符转十进制的问题
首先得先提一下你代码里的一个小问题:你声明的hexText数组长度是9,那它的索引范围是0到8,所以hexText[9]会抛出数组越界异常哦!根据你注释里的5A3F0000A(共9个字符),最后一个字符'A'应该是hexText[8]。
接下来,把十六进制字符(比如'A')转换成对应的十进制数值(10),有两种常用且可靠的方法:
方法1:使用Character.digit()方法(推荐)
这个方法专门用来将指定基数的字符转换为对应的整数,完美适配十六进制的场景,还自动支持大小写的十六进制字符(比如'a'和'A'都能转成10):
char[] hexText = new char[9]; // 假设这里已经给hexText赋值为{'5','A','3','F','0','0','0','0','A'} char c = hexText[8]; // 取最后一个字符'A' int lastD = Character.digit(c, 16); // 结果就是10
方法2:手动判断转换
如果你想自己实现逻辑,也可以通过字符的ASCII值来计算:
char[] hexText = new char[9]; char c = hexText[8]; int lastD; if (c >= '0' && c <= '9') { lastD = c - '0'; // 数字字符转十进制 } else if (c >= 'A' && c <= 'F') { lastD = c - 'A' + 10; // 大写字母转十进制 } else if (c >= 'a' && c <= 'f') { lastD = c - 'a' + 10; // 小写字母转十进制 } else { // 处理无效的十六进制字符 throw new IllegalArgumentException("Invalid hex character: " + c); } // 此时lastD对于'A'来说就是10
两种方法里,Character.digit()更简洁也更不容易出错,建议优先使用。
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

