在Hex Fiend中打开了一个二进制文件
我高亮显示第一个288字节并使用CMD+C复制
然后我尝试从代码中检索它:
NSPasteboard *pboard = NSPasteboard.generalPasteboard;
NSString *content = [pboard stringForType:NSPasteboardTypeString];
NSData *data1 = [content dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
NSData *data2 = [pboard dataForType:NSPasteboardTypeString];data1和data2看起来类似于:
{length = 435, bytes = 0x41c39a67 c28d3c18 c3847a1e c2bf5dc2 ... bac3884f 3274c3b8 }我将CMD+V的内容粘贴到Sublime Text和VS code中,它们都可以正确地显示出来:
我的问题是:如何从NSPasteboard中获得准确的288个字节
谢谢你们!
更新
NSPasteboard *pboard = NSPasteboard.generalPasteboard;
for (NSString *t in pboard.types) {
NSLog(@"pboard type: %@, data length: %ld", t, [pboard dataForType:t].length);
}
NSLog(@"----");
for (NSPasteboardItem *item in [pboard pasteboardItems]) {
for (NSString *type in [item types]) {
NSData *data = [item dataForType:type];
NSLog(@"item type: %@, data length: %ld", type, data.length);
}
}结果:
2022-04-11 16:08:59.726507+0800 testapp[50006:2713553] pboard type: dyn.ah62d4rv4gu8yuvwusmy1q2pyqzbhw7dfkf3he2p3nbvg82pwqvnhw6df, data length: 341
2022-04-11 16:08:59.726649+0800 testapp[50006:2713553] pboard type: HFPrivateByteArrayPboardType, data length: 341
2022-04-11 16:08:59.733329+0800 testapp[50006:2713553] pboard type: public.utf8-plain-text, data length: 435
2022-04-11 16:08:59.733525+0800 testapp[50006:2713553] pboard type: NSStringPboardType, data length: 435
2022-04-11 16:08:59.733581+0800 testapp[50006:2713553] ----
2022-04-11 16:08:59.733722+0800 testapp[50006:2713553] item type: dyn.ah62d4rv4gu8yuvwusmy1q2pyqzbhw7dfkf3he2p3nbvg82pwqvnhw6df, data length: 341
2022-04-11 16:08:59.733806+0800 testapp[50006:2713553] item type: public.utf8-plain-text, data length: 435我仍然无法获得预期的288字节
Update2
来自Clipboard Viewer的快照显示不可见字符的字节被修改。
HFPrivateByteArrayPboardType快照
是的,HexFiend是开源的,但代码对我来说很复杂:(我还没有弄清楚如何从HFPrivateByteArrayPboardType plist中读取。
发布于 2022-04-11 12:43:22
抱歉伙计们我错了。
经过我的双重检查,Sublime Text和VS Code都不能正确地获得原始的288个字节。它们只能显示288个实际转换的字符(435字节)。我的错!
似乎不可能通过普通的字符串类型剪贴板安全地在不同的应用程序之间传递二进制数据。(如果我错了,请纠正我:)
https://stackoverflow.com/questions/71822178
复制相似问题