c语言字符串转成byte数组

char a[1024]="hello world!";
byte b[1024];
我想把a的元素转成byte型保存在b里,求解答

c语言中没有byte这种类型,这是计算机中存储信息的单位。

char 是字符型
byte 是字节型(0 - 255)
在参与算术运算是char类型会自动转为整型;如字符A会转为对应ASCII码65.

char是用来表示一个字符,而不是一个字,因为一个字要占用两个字节。而存储一个ANSI字符只需一个字节。注意,强调是ANSI字符,而不是Unicode字符。因为Unicode要占用两个字节。

byte类型是最自由的一种。它就占用一个字节,但没有定义这个字节拿来干什么。char定义为一个Unsigned Byte类型。也就是无符号的一个字节。它将一个字节的8位全占用了。可以表示的数据范围是0到255之间。

如果你确定处理的字符串是标准的ANSI字符串,那不必转换也可以直接一个字节一个字节地处理。如果要处理的字符串不定或是统一的Unicode字符串则要进行转换后进行处理。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-10

1、C这么灵活,通常不用转。

char a[1024]="hello world!";
byte *b=(byte*)a;
//这时b就等同于转了,直接用b[123]等就可以

2、强行转需要复制,浪费一倍内存。

#include<string.h>
...
...
char a[1024]="hello world!";
byte b[1024];
memcpy(b,a,1024);

第2个回答  2013-04-10
byte是什么?自己定义的类型?

C基本类型没有byte这个类型,C的char就是一个字节。相当于一个
byte。追问

就是想问字符串怎么转成字节数组

追答

char []就是字节数组。

关键你要干什么?要字节数组来干什么?

第3个回答  推荐于2017-11-25
C语言里没有byte类型,估计你这个byte是char或者unsigned char的别名追问

遇到的问题是
我用fread读一个图片保存在一个char a[]里面,然后要把这个传到xml里面,可是xml不能识别某些特殊字符,我就想着把传的时候都转成二进制,可是我不会把字符串转成二进制,求解

追答

哦,读取图片肯定有一些byte不是可打印的字符,本来就是二进制的,不是字符串转二进制的问题。xml是文本文件,不能保存也不能显示不可打印的字符。你可以存储成16进制的数字串,比如你图片读出来的是 9A7BC3,你就保存这样的字符串"9A7BC3"在xml里面,不是直接保存就行的,你要把9A这个字节转换成'9'和'A'的ASCII码

追问

fread读图片的时候就是字符串,怎么弄成16进制的数字串啊,不会

追答

存在char数组里的不一定就是字符串,任何二进制数据都可以存储在char数组里面。

void tohexstr(char c, char* str) {
static const char MAP[] = "0123456789ABCDEF";
str[0] = MAP[c & 0xF];
str[1] = MAP[(c >> 4) & 0xF];
}
int main() {
...
char buffer[MAX+1];
for (int i = 0; i < LENGTH; i++) {
tohexstr(data[i], buffer + k)
k += 2;
if (k >= MAX) {
// 写入buffer到xml文件里。
}
}
...
}

大体是这个意思,具体还有很多细节你自己慢慢搞吧

本回答被提问者采纳
相似回答