有没有办法增加一个无符号字符的大小,以便它可以被转换成一个大于该大小的整数?简单的方法来使大于256的无符号字符?所以它可以被转换为整数
UPDATE:
基本上我编辑,即一个端口号被定义为unsigned char,因为它们只需要数目高达255现在需要将其升高到任何端口号的exsisting系统,所以我试图找到增加尺寸,而不必经过文件改变引用等100的一个简单的方法..
有没有办法增加一个无符号字符的大小,以便它可以被转换成一个大于该大小的整数?简单的方法来使大于256的无符号字符?所以它可以被转换为整数
UPDATE:
基本上我编辑,即一个端口号被定义为unsigned char,因为它们只需要数目高达255现在需要将其升高到任何端口号的exsisting系统,所以我试图找到增加尺寸,而不必经过文件改变引用等100的一个简单的方法..
不,你不能改变的内建类型的大小。
但是你可以投unsigned char
到int
第一,后来更改:
unsigned char val = 25;
int int_val = val;
int_val = 1000;
根据问题的更新
我认为唯一的方法是手动更改类型。但改变做出typedef
并使用它之前:
typedef int PortId
与PortId
是的,它看起来像是一本手工作业!哦,值得一试! – 2012-07-17 15:05:40
的C替换unsigned char
++标准告诉字符的大小为1
但是,您可以使用typedef ,然后很容易改变大小:
typedef unsigned char data_type; // 1 byte
到
typedef unsigned short data_type; // 2 byte on some platforms
如果你真的希望它是2个字节,你需要'uint16_t',而不是'short'。 – Linuxios 2012-07-17 14:41:59
'sizeof(char)'是1个字节,但它可能是一个64位字节 – 2012-07-17 15:02:18
@JonathanWakely在这种情况下,在问题中已经明确指出它是一个8位字节。 – 2012-07-17 15:02:54
那你想干什么? – 2012-07-17 14:39:19
对不起,编辑我的问题给它一个理由! – 2012-07-17 14:43:22
'unsigned char'只能保存256个不同的值,句点。如果你想要更多,你将不得不使用另一种类型或添加另一个变量来保存额外的信息... – 2012-07-17 14:48:17