Objective c 将NSString转换为位值

Objective c 将NSString转换为位值,objective-c,nsstring,Objective C,Nsstring,如何将上述字符串转换为位值?在此之前我应该做字节转换吗? 我需要帮助。我之前检查过整数转换。是否先将字符串转换为UTF-8取决于您;这取决于你想要什么。内部NSString使用unichar类型将字符存储为UTF-16(实际上可能是UCS-2),因此您需要决定是使用内部表示还是其他外部编码的二进制 我希望您需要UTF-8编码的二进制文件,因此请尝试以下(已测试): #导入 @接口BinFuncs:NSObject +(NSString*)二进制字符串:(NSString*)str; @结束 @B

如何将上述字符串转换为位值?在此之前我应该做字节转换吗?
我需要帮助。我之前检查过整数转换。

是否先将字符串转换为UTF-8取决于您;这取决于你想要什么。内部
NSString
使用
unichar
类型将字符存储为UTF-16(实际上可能是UCS-2),因此您需要决定是使用内部表示还是其他外部编码的二进制

我希望您需要UTF-8编码的二进制文件,因此请尝试以下(已测试):

#导入
@接口BinFuncs:NSObject
+(NSString*)二进制字符串:(NSString*)str;
@结束
@BinFuncs的实现
+(NSString*)二进制字符串:(NSString*)str{
NSMutableString*binStr=[[NSMutableString alloc]init];
常量字符*cstr=[str UTF8String];
尺寸长度=标准长度(cstr);
对于(大小i=0;ic是否首先将字符串转换为UTF-8取决于您自己;这取决于您想要什么。内部
NSString
使用
unichar
类型将字符存储为UTF-16(实际上可能是UCS-2),因此您需要决定是要内部表示的二进制还是其他外部编码的二进制

我希望您需要UTF-8编码的二进制文件,因此请尝试以下(已测试):

#导入
@接口BinFuncs:NSObject
+(NSString*)二进制字符串:(NSString*)str;
@结束
@BinFuncs的实现
+(NSString*)二进制字符串:(NSString*)str{
NSMutableString*binStr=[[NSMutableString alloc]init];
常量字符*cstr=[str UTF8String];
尺寸长度=标准长度(cstr);
对于(大小i=0;i这应该是一个数字的十六进制表示吗?你应该把它转换成unicode的二进制表示吗?或者什么?你可以使用DataUsingEncode将一个NSString转换成一个NSData对象,它是一个八进制流,你可以很容易地访问。你也可以将它转换成一个c风格的字符串,然后从那里开始。但我怀疑你的追求离子就是这么简单。你到底在干什么?请说得更具体一点。这应该是一个数字的十六进制表示吗?你应该把它转换成unicode的二进制表示吗?还是什么?你可以使用DataUsingEncode将一个NSString转换成一个NSData对象,它是一个八进制流,你可以轻松访问。你可以转换它也转换成C风格的字符串,然后从那里开始。但我怀疑你的问题是否那么简单。你到底想干什么?请更具体一点。
NSString *strVal= @"BAAA";
#import <Foundation/Foundation.h>

@interface BinFuncs : NSObject
+ (NSString *)binaryOfString:(NSString *)str;
@end

@implementation BinFuncs

+ (NSString *)binaryOfString:(NSString *)str {
    NSMutableString *binStr = [[NSMutableString alloc] init];
    const char *cstr = [str UTF8String];
    size_t len = strlen(cstr);
    for (size_t i = 0; i < len; i++) {
        uint8_t c = cstr[i];
        for (int j = 0; j < 8; j++) {
            [binStr appendString:((c & 0x80) ? @"1" : @"0")];
            c <<= 1;
        }
    }
    return binStr;
}

@end

int main(int argc, const char **argv) {
    @autoreleasepool {
        for (int i = 1; i < argc; i++) {
            NSString *binStr = [BinFuncs binaryOfString:[NSString stringWithUTF8String:argv[i]]];
            NSLog(@"%@", binStr);
        }
    }

    return 0;
}

$ clang -o binstr binstr.m -framework Foundation
$ ./binstr 'the quick brown fox jumps over the lazy dog'
2013-09-30 09:19:49.674 binstr[58474:707] 01110100011010000110010100100000011100010111010101101001011000110110101100100000011000100111001001101111011101110110111000100000011001100110111101111000001000000110101001110101011011010111000001110011001000000110111101110110011001010111001000100000011101000110100001100101001000000110110001100001011110100111100100100000011001000110111101100111