objective-c NSLog 打印
时间: 2023-05-18 20:06:22 浏览: 77
Objective-C中,NSLog用于输出日志信息,其语法如下:
NSLog(@"format", argument);
其中,format是一个字符串,用于指定输出的格式,argument是一个可选的参数,用于指定输出的值。
例如,输出一个字符串可以这样写:
NSString *str = @"Hello, World!";
NSLog(@"%@", str);
输出一个整数可以这样写:
int num = 123;
NSLog(@"%d", num);
输出一个浮点数可以这样写:
float f = 3.14;
NSLog(@"%f", f);
需要注意的是,NSLog输出的信息会自动添加换行符,如果不需要换行符,可以使用printf函数代替NSLog。
相关问题
Objective-C 打印 Byte 数组 并取出最后一位转为16进制
可以使用以下代码打印 Byte 数组并取出最后一位转为16进制:
```objective-c
Byte byteArray[] = {0x12, 0x34, 0x56, 0x78, 0x9A};
NSUInteger length = sizeof(byteArray)/sizeof(Byte);
NSMutableString* hexString = [NSMutableString string];
for (NSUInteger i = 0; i < length; i++) {
[hexString appendFormat:@"%02X", byteArray[i]];
if (i < length - 1) {
[hexString appendString:@" "];
}
}
NSLog(@"%@", hexString);
Byte lastByte = byteArray[length - 1];
NSString* lastHex = [NSString stringWithFormat:@"%02X", lastByte];
NSLog(@"%@", lastHex);
```
这段代码首先定义了一个 Byte 类型的数组 byteArray,并计算出它的长度 length。然后使用循环将数组中的每个元素转为16进制字符串,并添加到一个可变字符串 hexString 中,每两个字符之间用空格隔开。最后使用 NSLog 打印字符串 hexString。
接着取出数组中的最后一个元素 lastByte,并将它转为16进制字符串 lastHex,然后使用 NSLog 打印出来。注意在格式化字符串时需要使用 %02X,这样可以保证输出的16进制字符串始终是两个字符,不足两个字符时前面补0。
Objective-C 获取image的uuid
要在Objective-C中获取image的uuid,您可以使用以下:
```objective-c
#import <mach-o/dyld.h>
#import <dlfcn.h>
#import <stdio.h>
void printImageUUID(NSString *imageName) {
const char *imageNameCString = [imageName cStringUsingEncoding:NSUTF8StringEncoding];
const struct mach_header *header = NULL;
// 获取image的mach_header
header = _dyld_get_image_header_by_name(imageNameCString);
if (header) {
// 获取uuid
Dl_info dlinfo;
if (dladdr(header, &dlinfo) != 0) {
const struct mach_header *mh = (const struct mach_header *)dlinfo.dli_fbase;
const struct load_command *cmd = (struct load_command *)((char *)mh + sizeof(struct mach_header));
for (uint32_t i = 0; i < mh->ncmds; i++) {
if (cmd->cmd == LC_UUID) {
const struct uuid_command *uuidCmd = (const struct uuid_command *)cmd;
uuid_t uuid;
memcpy(uuid, uuidCmd->uuid, sizeof(uuid_t));
// 打印uuid
char uuidStr[37];
uuid_unparse(uuid, uuidStr);
NSLog(@"UUID for %@: %s", imageName, uuidStr);
break;
}
cmd = (struct load_command *)((char *)cmd + cmd->cmdsize);
}
}
}
}
// 示例调用
printImageUUID(@"YourImageName");
```
将`YourImageName`替换为您要获取uuid的image的名称。此代码将打印出指定image的uuid。
请注意,此方法仅适用于在运行时加载的image,如动态库或框架。如果您需要获取静态链接的image的uuid,可以考虑使用其他工具或脚本来解析可执行文件并提取uuid信息。