c - 在 C 中反转十六进制数的程序
问题描述
我的方法:
步骤 1. 首先,我将十六进制数转换为十进制数。(十六进制到十进制逻辑)
然后我使用 ~ 运算符和 unsigned char 数据类型变量反转十进制数的位。
第 2 步。然后我将该十进制数转换为十六进制数。(十进制到六进制逻辑)
因此我得到了倒置的十六进制数。
输入和输出是十六进制数字串。
#include <stdio.h>
#include<string.h>
#include<math.h>
int
main ()
{
long decimal, qu, rem;
int k, j = 0;
char hexa[100];
int p = 0;
int dig, temp;
unsigned char re = 0;
char hex[32] = "42"; //input
int len = strlen (hex);
len--;
for (int i = len; i >= 0; i--)
{
switch (hex[i])
{
case 'A':
dig = 10;
break;
case 'B':
dig = 11;
break;
case 'C':
dig = 12;
break;
case 'D':
dig = 13;
break;
case 'E':
dig = 14;
break;
case 'F':
dig = 15;
break;
default:
dig = hex[i] - 48;
break;
}
temp = temp + dig * pow (16, p);
p++;
re = temp;
re = ~re;
}
qu = re;
while (qu != 0)
{
rem = qu % 16;
if (rem < 10)
hexa[j++] = 48 + rem;
else
hexa[j++] = 55 + rem;
qu = qu / 16;
}
for (k = j; k >= 0; k--)
{
printf ("%c", hexa[k]);
}
return 0;
}
解决方案
#include <stdlib.h>
#include <stdio.h>
int main() {
printf("Please enter some hex: ");
unsigned int hex;
// scan input as hex into an integer
scanf("%x", &hex);
// truncate the last byte into a char
unsigned char c = hex;
// invert it
c = ~c;
// print it back out as uppercase hex
printf("Inverted hex: %02X\n", c);
return 0;
}
推荐阅读
- react-native - 带有 Auth 的 axios 不是有效的 axios 实例
- r - 我无法从 xml 中提取节点。xml_find_all 未按预期工作
- python - 为什么我的正则表达式不起作用,它有一个“或”
- node.js - 如何使用nodeJS MongoClient按顺序打印数据库名称及其集合名称?
- python - Python检查N点的快速方法是否在同一个“区域”
- java - JSON 数组中的参数
- java - 如何使用 Java 更改 TextColor 和 TextSize?
- g++ - 如何修复“'g++' 不是内部或外部命令、可运行程序或批处理文件。”
- reactjs - React / Memo:用 React.memo 包装所有功能组件
- python - 计算简单的移动平均熊猫循环