c语言编写一个函数把16进制转换字符串
时间: 2024-01-20 10:03:45 浏览: 106
下面是一个将16进制数转换为字符串的C语言函数:
```c
void hex_to_str(char *str, uint8_t *hex, size_t hex_len)
{
int i;
for (i = 0; i < hex_len; i++) {
sprintf(str + (i * 2), "%02x", hex[i]);
}
str[i * 2] = '\0';
}
```
使用示例:
```c
#include <stdio.h>
#include <stdint.h>
void hex_to_str(char *str, uint8_t *hex, size_t hex_len);
int main()
{
uint8_t hex[] = {0x12, 0x34, 0xab, 0xcd};
char str[9];
hex_to_str(str, hex, 4);
printf("%s\n", str);
return 0;
}
```
输出结果为:1234abcd
相关问题
c语言字符串10进制转换8进制和16进制的字符串(字符串很长)
C语言中,可以使用sprintf函数将10进制转换为8进制和16进制的字符串。
转换为8进制的字符串,可以使用"%o"格式控制符;转换为16进制的字符串,可以使用"%x"或"%X"格式控制符。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int num = 123456789; // 待转换的10进制数
char octal_str[20], hex_str[20]; // 存储转换后的字符串
sprintf(octal_str, "%o", num); // 转换为8进制字符串
sprintf(hex_str, "%x", num); // 转换为16进制字符串
printf("转换为8进制字符串: %s\n", octal_str);
printf("转换为16进制字符串: %s\n", hex_str);
return 0;
}
```
c语言编写一个字节的16进制数转换成10进制数据的函数
在C语言中,你可以创建一个函数来将一个字节的16进制表示转换为10进制整数。下面是一个简单的示例,这个函数接受两个字符作为输入(代表一个两位的16进制数字),然后计算对应的十进制值:
```c
#include <stdio.h>
#include <string.h>
unsigned int hexToDecimal(char hexChar) {
if (hexChar >= '0' && hexChar <= '9') {
return hexChar - '0';
} else if (hexChar >= 'A' && hexChar <= 'F') {
return hexChar - 'A' + 10;
} else if (hexChar >= 'a' && hexChar <= 'f') {
return hexChar - 'a' + 10;
}
// 如果输入不是有效的十六进制字符,返回错误值
return -1;
}
unsigned int byteToDecimal(char* hexByte) {
unsigned int decimal = 0;
for (int i = 0; hexByte[i] != '\0'; i += 2) { // 每两位一组
char highDigit = hexByte[i];
char lowDigit = hexByte[i+1];
decimal = (decimal << 4) | (hexToDecimal(highDigit) * 16) |
hexToDecimal(lowDigit);
}
return decimal;
}
int main() {
char hexString[] = "0x12AB"; // 示例16进制字符串
unsigned int decimalValue = byteToDecimal(hexString + 2); // 跳过前缀"0x"
printf("Hex to Decimal: %u\n", decimalValue);
return 0;
}
```
在这个例子中,`hexToDecimal()`函数处理单个十六进制字符,而`byteToDecimal()`函数遍历整个字符串并组合每个两位的十六进制数值。
阅读全文