在C语言中,char 类型本质上是1字节的整数(通常为8位),因此可以直接将其视为字节(byte),以下是几种常见的转换方式及示例:

(图片来源网络,侵删)
直接赋值(最常用)
char 和 byte 在C语言中可以直接互换,因为它们的存储大小相同(1字节)。
#include <stdio.h>
int main() {
char c = 'A'; // 字符 'A' 的ASCII码为65
unsigned char byte = c; // 直接转换(无符号字节)
printf("char: %c (ASCII: %d)\n", c, c);
printf("byte: %u\n", byte); // 输出字节的值
return 0;
}
说明:
char可能是 signed(范围-128~127)或 unsigned(范围0~255),具体取决于编译器。- 如果需要确保无符号字节,使用
unsigned char。
显式类型转换
通过强制类型转换明确表达意图:
char c = 'A'; unsigned char byte = (unsigned char)c; // 显式转换为无符号字节
处理数组或指针
char 是数组或指针的一部分,逐个元素转换即可:

(图片来源网络,侵删)
#include <stdio.h>
int main() {
char str[] = "Hello";
unsigned char bytes[5];
for (int i = 0; i < 5; i++) {
bytes[i] = (unsigned char)str[i]; // 逐个字符转字节
}
// 输出字节数组
for (int i = 0; i < 5; i++) {
printf("Byte %d: %u\n", i, bytes[i]);
}
return 0;
}
处理负数(char 是 signed)
char 是 signed 且值为负数(如 -1),直接转换为 unsigned char 会得到其补码表示:
#include <stdio.h>
int main() {
signed char c = -1; // 二进制补码: 11111111
unsigned char byte = (unsigned char)c; // 转换为无符号字节
printf("signed char: %d\n", c); // 输出: -1
printf("unsigned byte: %u\n", byte); // 输出: 255(补码解释)
return 0;
}
char即字节:在C语言中,char就是1字节的整数,无需特殊转换。- 符号问题:
- 若需确保无符号(如网络传输、文件存储),用
unsigned char。 - 若需保留符号(如算术运算),用
signed char(默认char可能是 signed)。
- 若需确保无符号(如网络传输、文件存储),用
- 数组/指针:逐个元素转换即可。
示例:字符串转字节数组
#include <stdio.h>
#include <string.h>
void char_array_to_bytes(const char *str, unsigned char *bytes, size_t len) {
for (size_t i = 0; i < len; i++) {
bytes[i] = (unsigned char)str[i];
}
}
int main() {
const char *text = "Test";
unsigned char bytes[4];
char_array_to_bytes(text, bytes, 4);
for (int i = 0; i < 4; i++) {
printf("Byte %d: %u\n", i, bytes[i]);
}
return 0;
}
输出:
Byte 0: 84
Byte 1: 101
Byte 2: 115
Byte 3: 116
通过以上方法,可以灵活地在 char 和 byte 之间转换。
