int a[] = { 1, 3, 9, 2, 7, 4, 5, 8, 6 };
int main() {
int i;
qsort(a,sizeof(a)/4,4,"\x8b\0+\x02\xc3");
for (i = 0; i < sizeof(a)/4; i++) {
printf("%d ", a[i]);
}
puts("");
}
これを Ruby/DL を使って書くとこうなる。
require 'dl'
a = [1, 3, 9, 2, 7, 4, 5, 8, 6]
h = DL.dlopen('libc.so.6')
qsort = h.sym('qsort', '0PIIP')
ap = a.to_ptr
qsort.call(ap, a.size, 4, "\x8b\0+\x02\xc3")
p ap.to_a('I') #=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
プラットフォーム依存だから、リファレンスには載せることができませんね。
最近のコメント