首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从NSPasteboard中获取字节

如何从NSPasteboard中获取字节
EN

Stack Overflow用户
提问于 2022-04-11 02:41:35
回答 1查看 62关注 0票数 0

Hex Fiend中打开了一个二进制文件

六角恶魔快照

我高亮显示第一个288字节并使用CMD+C复制

然后我尝试从代码中检索它:

代码语言:javascript
复制
    NSPasteboard *pboard = NSPasteboard.generalPasteboard;
    NSString *content = [pboard stringForType:NSPasteboardTypeString];
    NSData *data1 = [content dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
    NSData *data2 = [pboard dataForType:NSPasteboardTypeString];

data1data2看起来类似于:

代码语言:javascript
复制
{length = 435, bytes = 0x41c39a67 c28d3c18 c3847a1e c2bf5dc2 ... bac3884f 3274c3b8 }

我将CMD+V的内容粘贴到Sublime TextVS code中,它们都可以正确地显示出来:

崇高的快照

我的问题是:如何从NSPasteboard中获得准确的288个字节

谢谢你们!

更新

代码语言:javascript
复制
    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);
        }
    }

结果:

代码语言:javascript
复制
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中读取。

EN

回答 1

Stack Overflow用户

发布于 2022-04-11 12:43:22

抱歉伙计们我错了。

经过我的双重检查,Sublime TextVS Code都不能正确地获得原始的288个字节。它们只能显示288个实际转换的字符(435字节)。我的错!

似乎不可能通过普通的字符串类型剪贴板安全地在不同的应用程序之间传递二进制数据。(如果我错了,请纠正我:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71822178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档