ruby 中的 char 转换在 C 中是不同的吗?

标签 c ruby

我尝试在 ruby​​ 和 C 中将小数转换为 char,结果如下:

In Ruby: 129.chr is equals to "\x81"
       : 106.chr is equals to "j"

In C   : (char)(129) is equals to "\201"
       : (char)(106) is equals to "j"

为什么在 C 中转换 129 时结果是将 129 转换为其 oct 值? ruby 有没有办法表现得像那样?

最佳答案

更正:在C中,字符常量是'j',而不是"j"(字符串字面量)

在C语言中,字符常量都是int类型,106(十进制整数)、\152(字符常量)没有区别八进制)和 'j'(字符常量)。

在 Ruby 中,要获取八进制字符串,请使用 Fixnum#to_s :

129.to_s(8)
# => "201"

关于ruby 中的 char 转换在 C 中是不同的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404460/

相关文章:

c - openmp c sleep 的理发师

Ruby popen 和可执行路径?

ruby - 通过迭代哈希来构建新的哈希。最优雅的方式?

ruby - "Execute and Update ' # => ' Markers"对于 VIM

ruby-on-rails - ActionDispatch::Http::UploadedFile 到 Base64

c - 无法正常写入文件

c - 使用指针查找重复项

c - 使用包括数组、整数和指针在内的指针算法在 C 中打印字符串

c - 使用绝对内存地址初始化指针

ruby-on-rails - bundler 如何工作(一般情况下)?