将 char 数组转换为 hex 数组

标签 c arrays

输入:

char arr1[9] = "+100-200"  // (+ is 2B, - is 2D, 1 is 31 and 2 is 32)

输出:

unsigned int arr2[4]= [0x2B31,0x3030,0x2D32,0x3030]

我该怎么做?

最佳答案

您的问题似乎不一致:0 应该转换为 0x30,它的 ASCII 值。

为什么要这样修改,代码很简单:

char arr1[8] = "+100-200";
unsigned int arr2[4];

for (int i = 0; i < 8; i += 2) {
    arr2[i / 2] = ((unsigned int)(unsigned char)arr1[i] << 8) |
                   (unsigned int)(unsigned char)arr1[i + 1];
}

for (int i = 0; i < 4; i++) {
    printf("0x%04X ", arr2[i]);
}
printf("\n");

输出:

0x2B31 0x3030 0x2D32 0x3030

关于将 char 数组转换为 hex 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051671/

相关文章:

c - 从文件导入链表数据时出现 fscanf 错误

c - 静态变量的内存位置

java - 如何使用 Java 匹配 2 个数组并绘制图表

c - 表中的最小值和最大值

arrays - 如何使用go在没有索引名称的情况下将值存储在hashmap中?

iphone - 理解 Objective-C 中的@Protocols

c - 返回的字符串值变成垃圾

c - VS 2010 中的枚举大小选项

c++ - 将值从 Map 复制到 C++ 程序中的 256x256 数组

Python 2.7.5 如何从用户输入中累积和声明数组/列表中的值?