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