查看: 3927|回复: 13

[已经解决] 字符串怎么化成16进制的数字?

  [复制链接]
梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-10-28 11:56:14 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 secondsen 于 2009-10-28 20:33 编辑

自己解决了。。。。
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-9-22
回帖
61
发表于 2009-10-28 14:30:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-28 14:36:29 | 显示全部楼层
你少了反斜杠,另\377是八进制的表示方法
再问个问题怎么吧0xFF再变回"\377"?
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-9-22
回帖
61
发表于 2009-10-28 14:57:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-28 15:43:46 | 显示全部楼层
"\377"就是一个字符啊用FF来存的这是八进制。十进制是255。
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-28 16:23:28 | 显示全部楼层
这就相当于ascii码啊,用什么数存这个字符就把这个数写出来,另一个问题就是把数在写成他代表的字符
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

发表于 2009-10-28 19:22:52 | 显示全部楼层
本帖最后由 神思 于 2009-10-28 19:44 编辑

先转10 再转16
  1. def _8to16_str(str)
  2.     temp = str.split(//)
  3.     int = 0
  4.     for i in 0...temp.size
  5.       int += ((temp[i].to_i) * (8 ** ((temp.size - 1) - i)))
  6.     end
  7.     return int.to_s(16)
  8.   end
复制代码
p _8to16_str("377") # => ff
-.-
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-28 20:03:08 | 显示全部楼层
不是"377" 是 "\377"呐
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

发表于 2009-10-28 20:15:16 | 显示全部楼层
晕。这有区别么?
-.-
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-28 20:28:57 | 显示全部楼层
本帖最后由 secondsen 于 2009-10-28 20:32 编辑

靠自己。。

  1. class String
  2.   def to16
  3.     s = ""
  4.     self.each_byte do |b|
  5.       s += b.to_s(16)
  6.     end
  7.     return s
  8.   end
  9. end

  10. a = "\377"
  11. p a.to16 #=> "ff"
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部