将NSInteger和NSString转换为字节数组

 打完BOSS好睡觉1998 发布于 2023-02-08 19:45

我需要将NSInteger和NSString表示为字节数组.以下是我要找的样本.

对于如何,这种编码工作得很好.我想通过代码来做到这一点.任何线索.

首先,NSInteger为Hex的字节:

NSInteger test = 1;
unsigned char byte[] = { 0x00, 0x01 };

NSInteger test = 16;
unsigned char byte[] = { 0x00, 0x10 };
NSData *data = [NSData dataWithBytes:byte length:sizeof(byte)];

二,NSString为十六进制字节:

NSString *test = @"31C5B562-BD07-4616-BCBD-130BA6822790";
unsigned char byte[] = {0x31, 0xC5, 0xB5, 0x62, 0xBD, 0x07, 0x46, 0x16, 0xBC, 0xBD, 0x13, 0x0B, 0xA6, 0x82, 0x27, 0x90};
NSData *data = [NSData dataWithBytes:byte length:sizeof(byte)];

我尝试使用下面的代码,它适用于我的UUID但是为了使NSInteger工作,我需要发送"0010"而不是16和"0001"而不是1.所以任何关于如何进行此转换的线索.

- (NSData *)hexData {
    NSMutableData *hexData = [NSMutableData data];
    int idx = 0;

    for (idx = 0; idx+2 <= self.length; idx+=2) {
        NSRange range = NSMakeRange(idx, 2);
        NSString* hexStr = [self substringWithRange:range];
        NSScanner* scanner = [NSScanner scannerWithString:hexStr];
        unsigned int intValue;
        [scanner scanHexInt:&intValue];
        [hexData appendBytes:&intValue length:1];
    }

    return hexData;
}

编辑:

int8_t test = -59;
int8_t bytes = CFSwapInt16HostToBig(test);
NSData *data1 = [NSData dataWithBytes:&bytes length:sizeof(bytes)];

达到0xFF而不是0xC4

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有