如何将一个int变量a的第N位设置为1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将一个int变量a的第N位设置为1相关的知识,希望对你有一定的参考价值。

参考技术A a|=1<<k;
就可以了
参考技术B public static void main(String[] args)
int a = 124365599;
String aNum = String.valueOf(a);
int index = 5;//指定的数字的位置
StringBuilder str = new StringBuilder(aNum);
str.replace(index-1,index, "1");
System.out.println("转换后的str数值为>>>>>>"+str);
int aNew = Integer.parseInt(str.toString());
System.out.println("转换后的int a 数值为>>>>>>"+aNew);

希望能帮到你!

如何将 int16_t Core Data 对象转换为 int 变量(并返回)?

【中文标题】如何将 int16_t Core Data 对象转换为 int 变量(并返回)?【英文标题】:How do I convert an int16_t Core Data object into an int variable (and back)? 【发布时间】:2013-09-27 19:20:11 【问题描述】:

这让我发疯了。

我的核心数据模型中有一个名为“cardType”的字段,它被定义为 int16_t。

我希望它保存定义为 int 的 UISegmentedControl.selectedSegmentIndex 的设置。这个特殊的 UISegmentedControl 设置为 4 个段,所以 int16_t 是多余的。

如果我尝试设置

segmentedControl.selectedSegmentIndex = [dataTable cardType]; 

我收到一个错误“从 'int16_t *' (aka 'short *') 分配给 'NSInteger' (aka 'int') 的整数转换指针不兼容”

为了好玩,我在方法返回前加了一个星号,即。 *[dataTable cardType],但这显然不起作用。我还做了一个 (int *)dataTable.cardType,但这也是一个愚蠢的尝试。编译器喜欢它,但运行时到处乱扔。

我还尝试了一些多步代码,我试图将值移动到一系列 NSNumber 和 NSInteger 操作中,但这些都不起作用。

我刚刚想到的另一个想法是将数据类型转换为 NSString 并使用字符串函数在文本和整数之间进行转换,但这似乎不太优雅。

看起来这应该是一件非常简单的事情,我只是太麻木了,找不到它。

【问题讨论】:

您是否自动生成了 dataTable 类?并尝试[[dataTable cardType] integerValue] 是的。对于 IntegerValue,我尝试输入它,但它不会自动键入该方法,这意味着它可能在我实现它的方式中不可用。如果我强制发送消息,我会得到“错误的接收器类型'int16_t *'(又名'short *')” 你为什么有short *?如果您使用的是 Core Data,它应该是 NSNumber @property (nonatomic) int16_t *cardType; 你自己明确写的吗? 【参考方案1】:

Core Data 自动为 @property 生成一个指向 int 的指针,而不是普通的 int。

我变了:

@property (nonatomic) int16_t *cardType;

@property (nonatomic) int16_t cardType;

现在一切都按照我想要的方式进行。即,

保存分段控件

[dataTable setCardType:[cardTypePicker selectedSegmentIndex]];

设置分段控件

cardTypePicker.selectedSegmentIndex = [dataTable cardType];

我不知道这是否是 Xcode 错误。

【讨论】:

以上是关于如何将一个int变量a的第N位设置为1的主要内容,如果未能解决你的问题,请参考以下文章

使用按位运算符查找每个偶数位是不是设置为 0

如果 Int32.TryParse 无法解析字符串,如何将其输出设置为 null? [复制]

如何测试 3 位总线的第一位是不是设置为 1 - verilog

将__m256i的前N位或后N位设置为1,其余为0的有效方法

c语言中如何设置第n位的值

x86 - 使用内联汇编设置位