Следующий RubyCocoa подходит для Max OS X 10.6, но не работает в 10.7.
require 'osx/cocoa'
include OSX
bytes = [128].pack('i1')
NSData.alloc.initWithBytes_length(bytes, bytes.length)
Во всех случаях это работает, когда не установлен верхний бит. Фактически, NSData.alloc, кажется, терпит неудачу, когда передается буфер, в котором для любого из байтов установлен верхний бит.
Версия Ruby - 1.8.7 для обеих ОС, поэтому я не могу понять, почему NSData по-разному интерпретирует буфер. Кто-нибудь может пролить свет?