使用 ruby​​ 对字符串进行按位运算

2023-11-29

如何在 ruby​​ 中对字符串执行按位运算? 我想要做bitwise &具有 4 字节长十六进制的 4 字节字符串,例如("abcd" & 0xDA2DFFD3)。我无法获取字符串的字节值。感谢您的帮助。


如果您总是要操作 4 字节字符串,String#unpack与一个论点'V'会将四个字节视为小端字节顺序的无符号长整型。使用'N'将强制网络字节顺序,并使用'L'将使用本机顺序。注意unpack总是返回一个数组,因此需要采用索引 0。

>> '0x%X' % ('abcd'.unpack('V')[0] & 0xDA2DFFD3)
=> "0x40216241"

如果它不总是四个字节,你可以调用String#bytes获取字符串的字节,然后您可以使用Enumerable#inject将字节累积成一个数字。

>> "abcd".bytes.inject {|x, y| (x << 8) | y}
=> 1633837924
>> "abcd".bytes.inject {|x, y| (x << 8) | y}.to_s(16)
=> "61626364"
>> "abcd".bytes.inject {|x, y| (x << 8) | y} & 0xDA2DFFD3
=> 1075864384
>> "0x%X" % ("abcd".bytes.inject {|x, y| (x << 8) | y} & 0xDA2DFFD3)
=> "0x40206340"

只要您使用 ASCII 字符串,这就是“安全”的。如果您开始使用多字节字符串,您将得到“奇怪”的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ruby​​ 对字符串进行按位运算 的相关文章

  • ruby 正则表达式扫描与 =~

    Ruby 1 9 3 文档似乎暗示 scan 等同于 除了 scan 返回多个匹配项 而 仅返回第一个匹配项 并且 scan 返回匹配数据 而 返回索引 但是 在下面的示例中 这两种方法似乎对相同的字符串和表达式返回不同的结果 这是为什么
  • Rails:与自身的多对多关系

    我在创建此关联时遇到问题 考虑模型 Entry 我希望条目有许多作为父母的条目 并且我希望条目有许多作为孩子的条目 我想通过一个我称为 关联 的模型来实现这种关系 所以这是我尝试的 移民 class CreateAssociations l
  • 如何在 Heroku 上使用 rdiscount?

    我正在尝试将一个小型测试应用程序推送到 Heroku 这是应用程序和 Gem 文件 App require sinatra require haml require rdiscount set markdown layout engine
  • ruby 中可以做动态变量吗? [复制]

    这个问题在这里已经有答案了 我可以通过其他方式实现这种动态性质 但这引起了我的好奇 Ruby 中有类似的机制吗 varname hello varname world echo hello Output world 您可以使用以下方法实现类
  • Rails 模型中的 class_nameforeign_key

    我最近遇到了这段代码 用户有很多答案 class name 和 foreign key 的目的是什么 class Answer lt ApplicationRecord belongs to user class name gt Quest
  • Rails 错误“NoMethodError” - 我的第一个 ruby​​ 应用程序

    我对 Rails 完全陌生 所以答案可能非常简单 开始 我的页面生成此错误 NoMethodError in Tasks new Showing app views tasks new erb where line 3 raised und
  • ERB 中的多行字符串缩进

    我有一个来自外部库的字符串 如下所示 s things each do thing n thing 5 n thing save n end n n 该输入字符串不会改变 我需要使用 ERB 将其插入到文件中 例如 erb ERB new
  • ajax 请求后无法显示 twitter bootstrap 模式

    我想在单击链接时显示模式窗口 但也想执行 ajax 请求来获取需要在模式窗口上显示的对象 我收到了需要在模态窗口上显示的内容的响应 但它没有弹出 因为模态窗口可能是脚本没有被执行 Code 主页 div div JavaScript 代码
  • 如何与 SecretKeySpec 一样加密 ruby​​ 中的数据?

    我正在尝试使用带有 AES 算法的 Cipher 来加密 ruby 中的字符串 我有用Java编写的示例 我从这个例子中得到了帮助 并用 Java 编写了代码 但无法获得与 JAVA 中相同的输出 下面是用java编写的代码 import
  • VIM 分块插入

    我想在 VIM 中选定的文本块的开头插入一个哈希 Ruby 注释 我在可视模式下选择了线条 但如何对所有线条执行相同的操作 您有两个主要选择 在块视觉模式中选择 ctrl v 然后使用I沿着整个块的左侧插入相同的东西 相似地A追加 看分块运
  • Rails before_action for ActionMailer 将使用邮件程序参数

    假设我有一个发送不同电子邮件的邮件程序 但预计会使用相同的参数进行调用 我想为所有邮件程序操作处理这些参数 所以 调用一个before action这将读取发送到邮件程序方法的参数 mailers my mailer rb class My
  • 捆绑安装--无需生产有什么作用?

    我见过有人使用这个 我自己也按照指示使用它 我只是没有真正理解它的实际作用 我完全理解bundle install部分 但不是 without production一部分 它有什么作用以及我为什么要使用它 如果您的 Gemfile 中有一个
  • 从 Rails 获取所有模型的列表[重复]

    这个问题在这里已经有答案了 我需要一个包含所有模型 类名 的列表 这些模型末尾有模式 Cube 例子 我所有的模型 ModelFoo ModelBar ModelBarCube Mode2BarCube 我需要的 ModelBarCube
  • RubyMine 无法识别 Rails 应用程序

    我有一个关于使用从目录打开方法将 Rails 应用程序导入 RubyMine 的问题 我的计算机上有两个不同的 Rails 应用程序 但 RubyMine 只将其中一个识别为 Rails 应用程序 而将另一个识别为普通目录 这是一个问题 因
  • 将局部变量向下传递 Rails 4 中的部分层次结构以实现 Ransack 关联

    我正在尝试使用 Ransack 在我的模型的所有索引页上实现搜索和排序表单 我希望尽可能地做到这一点 因此我在视图 应用程序文件夹中创建了三个部分 视图 application table search and sort form html
  • Readline、输入记录分隔符和 Ruby

    在 Ruby 中 我希望读取数据 直到到达分隔符或文件末尾 我发现通过重新定义这是可能的 or the INPUT RECORD SEPARATOR到我的分隔符 然而 考虑到 Ruby 语言中的所有 功能 更改全局值来执行此操作似乎很笨拙
  • 使用 ruby​​ 2.4 安装 json 1.8.3 时出错

    版本信息 ruby 2 4 0p0 2016 12 24 修订版 57164 x86 64 linux 宝石2 0 3 Windows 10 I ran bundle install它告诉我跑gem install json v 1 8 3
  • 为什么我不能让 rake db:migrate 为 ruby​​.railstutorial.org 工作

    我决定完成教程 创建新应用程序并添加新应用程序后user string email string然后执行rake db migrate在应用程序目录中 我得到以下输出 rake aborted undefined method task f
  • Rspec——需要存根在另一个文件中调用的 File.open

    在我的测试中 我正在初始化一个名为的新类Package带有一些参数 在此类的初始化中 我打开一个在远程机器上可用的文件 但不是本地常见的文件 我想知道如何在测试中对该方法进行存根 我正在使用 rspec 和 mocha 我尝试过类似的东西
  • 设计 /users/sign_in 重定向到错误的控制器

    Vitals ruby 1 9 3p194 2012 04 20 修订版 35410 i686 linux Rails 3 2 7 设计2 1 2 GET users sign in 正在尝试重定向到错误的控制器 它已停止重定向到 weco

随机推荐