gpt4 book ai didi

ios - NSString 二进制操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:28:16 25 4
gpt4 key购买 nike

我有 NSString *a =@"00011"NSString *b=@"110001",我想做按位与 (&) 使用这些字符串,即 "a" & "b",值应该是 00001
如何实现,我可以进行手动操作,例如循环字符串,但我想使用 & 运算符。如何实现?

最佳答案

巧合的是,ASCII 编码的“0”和“1”字符的二进制表示使得仅对字符本身执行按位和运算成为可能:

'0' & '0' == '0'
'0' & '1' == '0'
'1' & '0' == '0'
'1' & '1' == '1'

这一事实使得可以轻松地按位和任意长度的字符串(超过 64 位)执行操作。以下实现使用同样有效的 UTF16 字符。它仅受堆栈大小的限制(由于 VLA)。

NSString *StringBinaryAnd(NSString *a, NSString *b)
{
NSUInteger length = [a length];
NSCParameterAssert([b length] == length);

unichar buffer[length];
[a getCharacters:buffer range:(NSRange){.length=length}];

for (NSUInteger i = 0; i < length; i += 1)
buffer[i] &= [b characterAtIndex:i]; // here's the magic

return [[NSString alloc] initWithCharacters:buffer length:length];
}

关于ios - NSString 二进制操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23385026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com