将char强制转换为4位的位字段项

克里斯蒂安

大家好,我面临另一个问题,我正在研究单个位并从ascii文本中提取数据。问题是编译器给我一个错误,关于将char(8位)强制转换为4位内存字段可能会改变其值。

显然,这是事实,但是我该如何克服该错误呢?

typedef struct {
struct {
    unsigned int type:        4;
    unsigned int uid:         8;
    unsigned int operation:   4; 
    unsigned int reg:         16;
}header;
char *arg_nm;
} OWL_request;

完整的错误:

 error: conversion to 'unsigned char:4' from 'char' may alter its value [-Werror=conversion]

这是作业

request.header.type = (char)(j[0]-65);

j*char

我要做的是摆脱错误而不更改编译器标志

我们

使用gcc,您可以通过将值屏蔽为您分配给的位域中的位数来摆脱警告,因为它type是4位,所以您可以执行以下操作:

request.header.type = (unsigned)(j[0]-65) & 0xf;

(请注意,关于为什么不应该使用bitfields,您可以找到几个很好的参数,请参见此处例如,使用纯整数和@LPs建议的位旋转)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果为null,则将字段强制转换为位0;否则,将字段强制转换为位1

来自分类Dev

将int(32位)转换为char(8位)

来自分类Dev

将uint32变量强制转换为位字段-未定义行为?

来自分类Dev

PHP将24位颜色转换为4位

来自分类Dev

PHP将24位颜色转换为4位

来自分类Dev

从4位小数转换为2位

来自分类Dev

将int位转换为float位

来自分类Dev

将位字符串转换为char

来自分类Dev

将位字符串转换为char

来自分类Dev

将8位数字转换为char的算法的优化

来自分类Dev

将8位转换为换算后的12位等效项

来自分类Dev

将8位转换为换算后的12位等效项

来自分类Dev

将4个原始字节转换为32位浮点

来自分类Dev

将4位整数转换为布尔值列表

来自分类Dev

将4位整数转换为十进制的金额

来自分类Dev

如何将十六进制char转换为4位二进制表示形式?

来自分类Dev

将2位数的年份转换为4位数的年份

来自分类Dev

Python:如何将4位数字数组按位转换为更大的数字?

来自分类Dev

将32位浮点DM4转换为带符号的16位

来自分类Dev

将2位数的年份转换为4位数的年份

来自分类Dev

Python:如何将4位数字数组按位转换为更大的数字?

来自分类Dev

wxpython> DatePickerCtrl obj-如何将“年”从2位转换为4位?

来自分类Dev

将位集强制转换为无符号字符,反之亦然

来自分类Dev

将32位设备的ALAssetRepresentation大小(长整型)强制转换为size_t的“正确”方法

来自分类Dev

将位图转换为1位位图

来自分类Dev

使用alpha将8位PNG转换为32位

来自分类Dev

将8位值转换为24位值

来自分类Dev

将32位数字转换为16位或更少

来自分类Dev

Java将8位数字转换为10位

Related 相关文章

热门标签

归档