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]
プラットフォーム依存だから、リファレンスには載せることができませんね。
最近のコメント