C++ 是否将字符[]的数组转换为字节[],反之亦然?C++;

C++ 是否将字符[]的数组转换为字节[],反之亦然?C++;,c++,char,C++,Char,将字符数组转换为字节(反之亦然)的最佳方法是什么 解决方案: void CharToByte(char* chars, byte* bytes, unsigned int count){ for(unsigned int i = 0; i < count; i++) bytes[i] = (byte)chars[i]; } void ByteToChar(byte* bytes, char* chars, unsigned int count){ for(

将字符数组转换为字节(反之亦然)的最佳方法是什么

解决方案:

void CharToByte(char* chars, byte* bytes, unsigned int count){
    for(unsigned int i = 0; i < count; i++)
        bytes[i] = (byte)chars[i];
}

void ByteToChar(byte* bytes, char* chars, unsigned int count){
    for(unsigned int i = 0; i < count; i++)
         chars[i] = (char)bytes[i];
}
void CharToByte(字符*字符,字节*字节,无符号整数计数){
for(无符号整数i=0;i > > P> C++中没有字节类型,按照标准:

编辑:

1.7:

一个字节至少足够大,可以 包含基本组的任何成员 执行字符集和 由连续的序列组成 位,其编号为 实现定义

5.3.3:

sizeof(字符)、sizeof(签名字符)和 sizeof(无符号字符)为1;这个 sizeof的结果适用于任何其他 基本类型(3.9.1)为 实现定义


几乎在每一个C++实现中,你会遇到,<代码> char < /> >完全是Byth八位字节。这不是由C++标准保证的,但实际上总是如此。一个

char
总是至少有8位大,准确的位数由预处理器常数
char\u BIT
给出。另外,
sizeof()
操作符根据
char
s的数量,而不是字节八位组的数量来告诉您对象/类型的大小,因此如果您在一个具有16位
char
和32位
int
的奇怪系统上,那么
sizeof(int)
将是2,而不是4


编辑:将字节替换为八位字节。C标准保证字符
char
为字节,但不能保证字节为八位字节,八位字节正好是8位。如果你曾经读过任何法国的技术文献,他们总是使用“八位字节”而不是“字节”,它们有千字节(KO)、兆字节(MO)等。而不是千兆字节和兆字节。

< P> C++中没有字节类型。您可以将def'unsigned char'键入'byte',如果这样更好的话。实际上,所有的字节都是C++中的一个无符号字符。除此之外,是的,我会放弃。。。但这种演员阵容更好:

unsigned_char_arr[i]= static_cast<unsigned char>(char_arr[i]);
unsigned_char_arr[i]=static_cast(char_arr[i]);

或者。。。只要使用char数组,并在需要将其解释为无符号字符时将其强制转换…

类型char是少数具有ANSI标准保证的大小且大小为1字节的类型之一。据我所知,C并没有直接定义byte类型。然而,如果有一个名为byte的类型,而实际上它的大小不是一个字节,那就有点疯狂了。因此,一个简单的cast应该可以做到这一点。

事实上,我认为char的定义正好是1字节(但至少是8位)。至少,sizeof(char)被定义为1。@Chris:根据标准中的1.7,字节被定义为“至少大到足以容纳基本执行字符集的任何成员”,但这可能涉及实现定义的位数。Char的大小总是正好是1“字节”。“这不是由C++标准保证的……”真的吗?我确信它是由C标准保证的。在C++中,我们得到了一个字符中的位数,它包含了STD::MigCixIOL:::数字,在.@亚当中定义,CHAR的大小由标准返回ANSI 89保证。这是为数不多的几种类型之一,他们费心给它一个具体的大小。@soulmerge是的,但我不确定它是否正式成为标准的一部分。我很确定
static\u cast
会导致编译失败。出于某种原因,C++需要一个<代码> RealTytCase< /Calp>或<代码> RealTytRask。我从来没有真正理解为什么,因为它们是相同的宽度,只有潜在的符号取决于位模式的变化。对于更大的文件,也考虑了几百个调用的代码的影响。