gpt4 book ai didi

objective-c - 如何替换 cocoa 中的第一个字节

转载 作者:行者123 更新时间:2023-12-03 17:30:17 25 4
gpt4 key购买 nike

我有一个十六进制字节的文件。我使用 NSData 读取这个文件,然后将 NSdata 转换为 int。现在我想将文件中的第一个字节替换为其他值。示例:转换为 int 时的第一个字节是 49,我想将其更改为 48,然后将其替换到文件中。我怎样才能做到这一点?这是我的代码:

NSData *data = [NSData dataWithContentsOfFile:@"file"];
NSLog(@"Patch File: %@",data);
NSData *theData = [NSData dataWithData:[data subdataWithRange:NSMakeRange(0,1)]];
int value = *(int*)([theData bytes]);
NSLog(@"%d",value);
if( value == 49)
value = 48;
NSLog(@"%d",value);

当运行上面的代码时,它显示:

<31414142 42434344 44454546 4654502d 4c494e4b 2d544553 54000000 00000000 00000000>

我想将第一个字节替换为 0x02。我怎样才能做到这一点?非常感谢

最佳答案

NSMutableData”有一个非常方便的功能"replaceBytesInRange: withBytes:"你可以用它来替换东西。

因此修改您的代码,使其看起来像这样:

    NSMutableData *data = [NSMutableData dataWithContentsOfFile:@"test"];
NSLog(@"Patch File: %@",data);
int value;

[data getBytes: &value range: NSMakeRange(0,1)];
NSLog(@"%d",value);

if( value == 49)
value = 48;

[data replaceBytesInRange: NSMakeRange(0,1) withBytes: &value];

NSLog(@"%d",value);

NSError * error = nil;
BOOL success = [data writeToFile: @"file" options: NSDataWritingAtomic error: &error];
if(success == NO)
{
NSLog( @"error writing data out -- %@", [error localizedDescription]);
}

关于objective-c - 如何替换 cocoa 中的第一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094333/

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