Java Hex 和 C Hex

介绍

在计算机科学中,十六进制(Hexadecimal)是一种常见的数制系统,它使用16个数字来表示数值。在日常编程中,我们经常会遇到需要将十六进制数转换为十进制数或者将十进制数转换为十六进制数的情况。Java 和 C 是两种常用的编程语言,它们都提供了相应的方法来处理十六进制数。

本文将介绍 Java 和 C 中处理十六进制数的方法,并提供相应的代码示例。

Java 中的十六进制操作

Java 提供了多种方法来处理十六进制数。下面是一些常用的方法:

  1. 将十六进制字符串转换为十进制数:Java 中可以使用 Integer.parseInt() 方法将一个十六进制字符串转换为十进制数。示例代码如下:
String hexString = "1A";
int decimal = Integer.parseInt(hexString, 16);
System.out.println(decimal); // 输出26
  1. 将十进制数转换为十六进制字符串:Java 中可以使用 Integer.toHexString() 方法将一个十进制数转换为十六进制字符串。示例代码如下:
int decimal = 26;
String hexString = Integer.toHexString(decimal);
System.out.println(hexString); // 输出1a
  1. 将十六进制字符串转换为字节数组:Java 中可以使用 javax.xml.bind.DatatypeConverter.parseHexBinary() 方法将一个十六进制字符串转换为字节数组。示例代码如下:
String hexString = "1A";
byte[] byteArray = javax.xml.bind.DatatypeConverter.parseHexBinary(hexString);
System.out.println(Arrays.toString(byteArray)); // 输出[26]
  1. 将字节数组转换为十六进制字符串:Java 中可以使用 javax.xml.bind.DatatypeConverter.printHexBinary() 方法将一个字节数组转换为十六进制字符串。示例代码如下:
byte[] byteArray = {26};
String hexString = javax.xml.bind.DatatypeConverter.printHexBinary(byteArray);
System.out.println(hexString); // 输出1A

C 中的十六进制操作

C 语言中处理十六进制数相对 Java 来说稍微复杂一些,需要借助于位运算和字符数组。下面是一些常用的方法:

  1. 将十六进制字符串转换为十进制数:C 中可以使用 sscanf() 函数将一个十六进制字符串转换为十进制数。示例代码如下:
#include <stdio.h>

int main() {
    char hexString[] = "1A";
    int decimal;
    sscanf(hexString, "%x", &decimal);
    printf("%d\n", decimal); // 输出26
    return 0;
}
  1. 将十进制数转换为十六进制字符串:C 中可以使用 sprintf() 函数将一个十进制数转换为十六进制字符串。示例代码如下:
#include <stdio.h>

int main() {
    int decimal = 26;
    char hexString[10];
    sprintf(hexString, "%X", decimal);
    printf("%s\n", hexString); // 输出1A
    return 0;
}
  1. 将十六进制字符串转换为字节数组:C 中可以使用位运算和字符数组将一个十六进制字符串转换为字节数组。示例代码如下:
#include <stdio.h>
#include <stdlib.h>

int main() {
    char hexString[] = "1A";
    int length = strlen(hexString);
    int i, j;
    unsigned char *byteArray = malloc(length / 2);
    for (i = 0, j = 0; j < length; i++, j += 2) {
        sscanf(hexString + j, "%2hhX", byteArray + i);
    }
    for (i = 0; i < length / 2; i++) {
        printf("%d ", byteArray[i]); // 输出26
    }
    free(byteArray);
    return 0;
}
  1. 将字节数组转换为十六进制字符串:C 中可以使用 sprintf() 函数将一个字节数组转换为十六进制字符串。示例代码如下:
#include <stdio.h>
#include <stdlib.h>

int main() {
    unsigned char byteArray[] = {26};
    int length =