C 范围为0到255的整数

C 范围为0到255的整数,c,struct,integer,ip,C,Struct,Integer,Ip,我想声明一个包含4个整数的结构,每个整数只能是0到255。有办法吗?目前,我正在检查输入(在输入函数中) 您可以使用无符号字符(或者更好的是,uint8\u t),但这并不意味着您可以停止检查输入。这取决于你的要求。如果我输入256会发生什么?可以吗 另一方面,sizeof(char)被定义为1,但一个字节没有定义为8位。在大多数硬件上都可以,但出于这个原因,最好使用uint8\u t。好的,可以使用无符号字符(或者更好的是,uint8\u t),但这并不意味着可以停止检查输入。这取决于你的要求

我想声明一个包含4个整数的结构,每个整数只能是0到255。有办法吗?目前,我正在检查输入(在输入函数中)


您可以使用
无符号字符(或者更好的是,
uint8\u t
),但这并不意味着您可以停止检查输入。这取决于你的要求。如果我输入
256
会发生什么?可以吗


另一方面,
sizeof(char)
被定义为1,但一个字节没有定义为8位。在大多数硬件上都可以,但出于这个原因,最好使用
uint8\u t

好的,可以使用
无符号字符(或者更好的是,
uint8\u t
),但这并不意味着可以停止检查输入。这取决于你的要求。如果我输入
256
会发生什么?可以吗


另一方面,
sizeof(char)
被定义为1,但一个字节没有定义为8位。在大多数硬件上都可以,但出于这个原因,最好使用
uint8\t

是的,您可以使用位字段类型:

struct ip 
{
    unsigned num1 : 8;
    unsigned num2 : 8;
    unsigned num3 : 8;
    unsigned num4 : 8;
};

是的,您可以为此使用位字段类型:

struct ip 
{
    unsigned num1 : 8;
    unsigned num2 : 8;
    unsigned num3 : 8;
    unsigned num4 : 8;
};


请用您正在使用的语言对此进行标记,并共享相关代码。@StephenC:CPut-a-shirt-on-dude中没有“byte”类型!;-)请用您正在使用的语言对此进行标记,并共享相关代码。@StephenC:CPut-a-shirt-on-dude中没有“byte”类型!;-)我可以直接向它存储一个整数值吗?例如:bla->num1=1;这行吗?@Nguyễ是的。但正如EdS.所说,您需要考虑bla->num=256;应该处理,特别是如果256来自输入。是的,我知道了。不过还有一个问题。我如何在Java中做同样的事情?因为我认为Java不允许您声明无符号字符,是吗?@NguyễnDuy:Java没有无符号字节,所以您将使用int,并且必须
&0xFF
@NguyễnDuy:
int myUnsignedByte=input&0xFF
。请注意,这一行将简单地剪裁,即,如果我输入
12345
,结果将是
255
。那么我可以直接向它存储一个整数值吗?例如:bla->num1=1;这行吗?@Nguyễ是的。但正如EdS.所说,您需要考虑bla->num=256;应该处理,特别是如果256来自输入。是的,我知道了。不过还有一个问题。我如何在Java中做同样的事情?因为我认为Java不允许您声明无符号字符,是吗?@NguyễnDuy:Java没有无符号字节,所以您将使用int,并且必须
&0xFF
@NguyễnDuy:
int myUnsignedByte=input&0xFF
。请注意,这一行将简单地剪裁,即,如果我输入
12345
,结果将是
255
。谢谢。我如何对Java执行相同的操作?我不确定Java中执行此操作的惯用方法-可能是将提供的数字剪裁到所需范围的setter函数?@Nguyễ恩杜:如果你这么关心java,那你为什么要问关于C的问题呢?@EdS。因为我需要对C和java做同样的事情。-1,既然有一种完全正确的方法,为什么还要使用像位字段这样令人讨厌的东西呢?谢谢。我怎么能对Java做同样的事情呢?我不确定Java中的惯用方法是什么——也许是一个setter函数,它可以将提供的数字钳制到所需的范围?@Nguyễ恩迪:如果你这么关心java,那你为什么要问关于C的问题呢?@EdS。因为我需要对C和java做同样的事情。-1,如果有一种完全正确的方法,为什么要使用像位域这样的讨厌的东西呢?