4
我想为Ruby做一个C扩展,它包含一个返回字符串的方法,该字符串有时需要在unsigned char
中有字符值。在http://github.com/shyouhei/ruby/blob/trunk/README.EXT中,将C字符串转换为Ruby字符串所列出的所有函数都带有带符号的字符。所以我不能这样做:ruby c扩展:字符值超过127
unsigned char bytes[] = {0xf0, 0xf1, 0xf2};
return rb_str_new(bytes, 3);
我怎么能做一个方法,返回这些类型的字符串?换句话说,我将如何使用返回"\xff"
的方法进行C扩展?
什么,如果你只是删除在上面的代码'unsigned'问题? – 2010-04-24 20:30:35
@ Marc-Andre Lafortune - 删除'unsigned'不会让我使用大于127的值,因为它们会变成负数。 – Adrian 2010-04-24 23:23:50
'char'与'signed char'实际上不是同一个类型 - 它是一个与'unsigned char'和'signed char'不同的类型,并且它是否被签名是实现定义的。 – caf 2010-04-25 07:35:03