将十六进制字符串转换为整型(int)数值

int c2i(char ch)  
{  
        // 如果是数字,则用数字的ASCII码减去48, 如果ch = '2' ,则 '2' - 48 = 2  
        if(isdigit(ch))  
                return ch - 48;  
  
        // 如果是字母,但不是A~F,a~f则返回  
        if( ch < 'A' || (ch > 'F' && ch < 'a') || ch > 'z' )  
                return -1;  
  
        // 如果是大写字母,则用数字的ASCII码减去55, 如果ch = 'A' ,则 'A' - 55 = 10  
        // 如果是小写字母,则用数字的ASCII码减去87, 如果ch = 'a' ,则 'a' - 87 = 10  
        if(isalpha(ch))  
                return isupper(ch) ? ch - 55 : ch - 87;  
  
        return -1;  
}  
  
/* 
 * 功能:将十六进制字符串转换为整型(int)数值 
 * */  
int hex2dec(char *hex)  
{  
        int len;  
        int num = 0;  
        int temp;  
        int bits;  
        int i;  
          
        // 此例中 hex = "1de" 长度为3, hex是main函数传递的  
        len = strlen(hex);  
  
        for (i=0, temp=0; i<len; i++, temp=0)  
        {  
                // 第一次:i=0, *(hex + i) = *(hex + 0) = '1', 即temp = 1  
                // 第二次:i=1, *(hex + i) = *(hex + 1) = 'd', 即temp = 13  
                // 第三次:i=2, *(hex + i) = *(hex + 2) = 'd', 即temp = 14  
                temp = c2i( *(hex + i) );  
                // 总共3位,一个16进制位用 4 bit保存  
                // 第一次:'1'为最高位,所以temp左移 (len - i -1) * 4 = 2 * 4 = 8 位  
                // 第二次:'d'为次高位,所以temp左移 (len - i -1) * 4 = 1 * 4 = 4 位  
                // 第三次:'e'为最低位,所以temp左移 (len - i -1) * 4 = 0 * 4 = 0 位  
                bits = (len - i - 1) * 4;  
                temp = temp << bits;  
  
                // 此处也可以用 num += temp;进行累加  
                num = num | temp;  
        }  
  
        // 返回结果  
        return num;  

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用 Python 来实现。以下是代码示例: ``` binary_string = "1001101" # 转换为十进制 decimal = int(binary_string, 2) print("十进制:", decimal) # 转换十六进制 hexadecimal = hex(decimal) print("十六进制:", hexadecimal) ``` 输出结果如下: ``` 十进制: 77 十六进制: 0x4d ``` ### 回答2: 要将一个二进制的字符串转换为十进制数值,可以使用如下的方法: 1. 首先,将二进制的字符串转换整型数值。 2. 从字符串的最后一位开始,将每个字符转换为数字,并根据其位置确定其权重。 3. 将每个数字与对应的权重相乘,并累加得到最终结果。 以下是一个示例代码: ```python binary_str = input("请输入一个二进制的字符串:") decimal = 0 weight = 1 for char in binary_str[::-1]: decimal += int(char) * weight weight *= 2 print("转换为十进制数值为:", decimal) ``` 要将一个二进制的字符串转换十六进制数值,可以使用如下的方法: 1. 首先,将二进制的字符串分组,每4位表示一个十六进制字符。 2. 根据每个分组的二进制数值转换为对应的十六进制字符。 以下是一个示例代码: ```python binary_str = input("请输入一个二进制的字符串:") hexadecimal = "" for i in range(0, len(binary_str), 4): binary_group = binary_str[i:i+4] decimal = int(binary_group, 2) hexadecimal += hex(decimal)[2:] print("转换十六进制数值为:", hexadecimal) ``` 希望这些代码能够帮助到您! ### 回答3: 要将二进制字符串转换为十进制数值,可以使用循环遍历二进制字符串的每一位,然后根据位置和权重进行累加计算。假设输入的二进制字符串为"11010",我们可以按照以下步骤进行转换: 1. 初始化一个变量decimal_value为0,用于存储最终的十进制数值。 2. 从二进制字符串的最右边开始,遍历每一位。 3. 对于第i位的二进制数字,其权重为2的i次方。 4. 将第i位的二进制数字乘以权重,并将结果累加到decimal_value中。 5. 最终得到的decimal_value即为转换后的十进制数值。 根据以上步骤,将"11010"转换为十进制数值的计算过程如下: decimal_value = (1 * 2^4) + (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 26 而要将二进制字符串转换十六进制数值,可以先将二进制字符串按照每四位分组,再将每一个四位的二进制字符串转换十六进制数值。继续以"11010"为例,将其分组为"0001"和"1010",分别转换为"1"和"A",最后连接起来,得到的十六进制数值为"1A"。 因此,对于给定的二进制字符串,可以通过以上的方法分别转换为对应的十进制和十六进制数值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值