Ruby - 如何将消息长度表示为 2 个二进制字节

2024-04-07

我正在使用 Ruby,并且正在与一个网络端点进行通信,该端点需要在发送消息本身之前格式化“标头”。

标头中的第一个字段必须是消息长度,它被定义为网络字节顺序中的 2 个二进制字节消息长度。

例如,我的消息长度是1024。如何将 1024 表示为二进制两个字节?


Ruby(以及 Perl 和 Python 等)中字节整理的标准工具是pack and unpack。红宝石的pack is in Array https://ruby-doc.org/core/Array.html#method-i-pack。你的长度应该是两个字节长并且按照网络字节顺序,这听起来像是一个工作n格式说明符:

n |整数| 16 位无符号网络(大端)字节顺序

所以如果长度在length,你会得到你的两个字节:

two_bytes = [ length ].pack('n')

如果您需要执行相反的操作,请查看String#unpack https://ruby-doc.org/core/String.html#method-i-unpack:

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

Ruby - 如何将消息长度表示为 2 个二进制字节 的相关文章

  • 如何加载 UrlHelper 和 Rails 中的路线?

    我想包括路线和link toPORO 中的方法 在控制台中测试这个时 我遇到了这个 如果我在没有路由助手的情况下包含 UrlHelper 一切似乎都工作正常 ruby 1 9 3 rc1 001 gt Rails version gt 3
  • 默认:Rails 资源路由的排除选项

    一个小问题 我正在将 Rails 用于 REST API 但由于它是 RESTful API 所以我并不真正需要 new or edit我的任何资源的路由 因为人们只会完全通过自动 JSON 请求而不是图形方式与此 API 交互 例如 不需
  • 通过套接字的身份验证方法

    我正在尝试通过套接字进行身份验证sailsjs and passport 挑战似乎在于套接字连接没有会话 并且 sailsjs 模拟请求对象 导致它没有 Passport 中间件设置 这导致nodejs抛出一个错误 说req对象没有调用的方
  • Chef - 使用动态变量创建模板?

    我在厨师食谱上遇到了一些挑战 我是厨师新手 所以请耐心等待 第 1 步 我的厨师食谱安装 Ruby Passenger 然后与 Nginx 一起编译 Passenger nginx 模块 Install passenger and ngin
  • 如何将 Flutter 应用连接到 tcp 套接字服务器?

    我很难将 Flutter 应用程序连接到服务器上的网络 tcp 套接字 我知道我必须使用某种中间选项 以便在 tcp 套接字到 flutter 以及 Flutter 到 tcp 套接字之间转换数据 任何想法 信息如何实现这一目标 问题是如何
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • 在 C# 中使用 SHA1 算法进行哈希处理

    我想哈希给定byte 数组与使用SHA1算法与使用SHA1Managed The byte 哈希值将来自单元测试 预期的哈希值是0d71ee4472658cd5874c5578410a9d8611fc9aef 区分大小写 我怎样才能实现这个
  • Cucumber / Savon 省略或删除日志输出

    在运行黄瓜测试时 我得到 除了测试结果之外 许多与调试 日志相关的输出 格式如下 D 2013 03 06T12 21 38 911829 49031 DEBUG SOAP request D 2013 03 06T12 21 38 911
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • Rails: :inverse_of 和关联扩展

    我有以下设置 class Player lt ActiveRecord Base has many cards inverse of gt player do def in hand find all by location hand en
  • Node.js、Socket.io:如何获取客户端浏览器语言?

    我正在尝试使用 socket io 和 node js 获取用户使用的语言 以便为播放视频提供正确的声音文件 我是node js 和socket io 的初学者 我通过 navigator language 在客户端获取了语言 并希望在连接
  • 将扁平树解析为非扁平树的算法

    我有以下扁平树 id name parent id is directory 50 app 0 1 31 controllers 50 1 11 application controller rb 31 0 46 models 50 1 1
  • WhatsApp 如何实现每台服务器 200 万个连接?

    在 Ubuntu 上 可以打开的最大套接字数似乎受以下控制 cat proc sys net ipv4 tcp max orphans 262144 根据 Rick Reed 来自 WhatsApp 的一次演示 这些人使用 FreeBSD
  • Rails 中过滤长日志参数

    我允许用户在我的网站上上传文件 其中一些文件可能非常大 并且占用了我的日志文件的很大一部分 所以我不想让它出现 我知道 config filter parameters password 过滤某些参数 但问题是参数位于这样的哈希中 pers
  • TCP/IP 传输期间套接字数据损坏

    当我通过预连接的 TCP IP 套接字发送数据时 我发现数据已损坏 Example Station1 正在向 Station2 发送数据 我已经在发送之前 在 S1 和接收之后 在 S2 打印了数据 以下是消息 S1 发送的数据是ACKS2
  • Docker-compose 和 Rails 控制台问题。 “在任何来源中都找不到 rake-13.0.6”

    尝试在 docker 下运行 Rails 控制台时遇到一些问题 所有其他 Rails 命令都按预期工作 但控制台却不然 octopus git master docker compose run web bundle exec rails

随机推荐

  • Elasticsearch 对具有部分边缘 ngram 补全的数组字段的搜索建议

    我正在尝试根据文档中的字符串数组构建一个建议器 它类似于this one https stackoverflow com questions 20789224 elasticsearch autocomplete search on arr
  • 使用自动配置时,Windows 实际上如何检测 LAN(代理)设置

    When Windows Internet 属性 gt 连接 gt LAN 设置 gt 自动配置被设定为 自动检测设置 Windows 实际上如何确定 发现设置是什么 它是网络广播还是对注册表中某处配置的服务器的某种有针对性的查询 还是其他
  • iOS8 委托方法中的 nil 对象 - 自定义键盘

    我正在构建一个自定义键盘 我正在我的中实现以下委托方法InputViewController 但我总是得到 textInput nil void textWillChange id
  • 让AJAX调用等待php中的事件

    我不知道我的瓷砖线是否足够清晰 我的问题是 我有一个 JS 应用程序需要等待服务器上的事件 目前 它每秒通过 XMLHttpRequest 轮询连续的服务器数据 我在想的是 是否可以让调用等待 例如 PHP 中的变量发生变化 我希望我的问题
  • 为什么 jQuery.html() 能够成功接受 jQuery 对象,尽管文档说它不能?

    我只是想确切地了解它是如何工作的 因为我的代码中有一个错误可能与我的误解有关 The docs http api jquery com html html2说htmlString的参数 html htmlString 可以是htmlStri
  • 内迭代

    我有一个 ViewScoped豆与一个List
  • 无法从 docker 将 RabbitMQ 连接到我的应用程序 [重复]

    这个问题在这里已经有答案了 我目前被这个问题困扰了大约一周 确实找不到合适的解决方案 问题是 当我尝试连接到 dockerized RabbitMQ 时 它每次都会给出相同的错误 wordofthedayapp wordofthedayap
  • 在 MongoDB 中维护文档的自定义顺序/排序

    在我的网络应用程序 XY 中 我向用户展示了一个经典的数据 文档 列表 表格 虽然 MongoDB 和 Mongoose 我使用 Mongoose 提供的所有排序功能对我来说都非常清楚 但我对按日期或字母顺序排序不感兴趣 就我而言 让用户维
  • C# 中未捕获未处理的异常

    我使用以下代码来处理程序中所有未处理的异常 但问题是异常没有传播到指定的方法 STAThread static void Main AppDomain currentDomain default AppDomain currentDomai
  • 黑莓中两个不同版本(4.6、4.7 和 5.0+ 以上)的一个构建

    我想导入黑莓 5 0 及更高版本的 facebook 库 但不想导入 4 6 和 4 7 的这些库 我尝试通过以下链接使用 4 7 及更高版本的预处理器 http smartfone more blogspot in 2010 05 cod
  • Tkinter 中的 matplotlib 画布上的光标

    我正在使用 Tkinter 模块在 Python 上编写 GUI 包 并通过使用 matplotlib图画布TkAgg显示一些图形数据 我还想通过以下方式与数据的视觉表示进行交互画布 mpl connect方法 一切都工作得很好 但我对默认
  • 查找具有给定 RGB 颜色的像素

    我想在 Python 中获取具有给定 RGB 颜色的像素的所有坐标 这是我正在使用的代码 但它不起作用 我想找到所有黄色像素 from PIL import Image def find rgb imagename r query g qu
  • PHPUnit 打印测试执行时间

    有没有办法用 PHPUnit 打印每个测试的执行时间 只需添加 log junit my tests log xml 然后使用电子表格应用程序 Excel Numbers Calc 打开此文件进行查看 您可以获得所需的所有信息 并且可以按测
  • 如何仅保存自定义元以供审阅数据仅在“预览更改”中查看,而不是前端的实际帖子

    我正在尝试添加自定义元并查看 预览更改 我可以看到更改 但更改也适用于前端的实际帖子 我希望更改将在发布或更新时更新到实际帖子 而不是在 预览更改 单击时更新 请帮忙 我已经关注了这个插件 函数 my plugin save post po
  • Cognito - error_description 用户名属性映射

    我已在 Amazon Cognito 中配置了一个用户池 以便能够登录 注册用户 并将 facebook 设置为身份提供商 在我的托管用户界面上 我可以成功单击 继续使用 facebook 但在重定向到 return uri 后 显示以下错
  • URLSession.shared.dataTask接收数据的正确方法

    再会 我在尝试找到检查从 dataTask 接收到的 数据 响应 错误 并进行一些特殊错误处理时的正确顺序时有点困惑 通常我们的 URLSession 看起来像这样 class HTTPRequest static func request
  • 在 Windows 上从源代码编译 RCurl

    由于没有 Windows 二进制文件v1 95 4 3然而 我需要安装 编译RCurl http cran r project org web packages RCurl index htmlWindows 8 1 上的源代码包 64 位
  • 动态添加/删除页眉和页脚

    我需要能够添加和删除页眉和页脚ListView动态地 所以我用页眉和页脚初始化我的活动 然后在某个时候我想隐藏它们 后来我需要添加以前的页眉和页脚 并保持相同Adapter 所以我找到了这个解决方案 但它很难看 我真的希望还有其他方法 基本
  • 从路径中获取文件名

    从路径获取文件名的最简单方法是什么 string filename C MyDirectory MyFile bat 在这个例子中 我应该得到 MyFile 没有扩展名 该任务相当简单 因为基本文件名只是从文件夹最后一个分隔符开始的字符串的
  • Ruby - 如何将消息长度表示为 2 个二进制字节

    我正在使用 Ruby 并且正在与一个网络端点进行通信 该端点需要在发送消息本身之前格式化 标头 标头中的第一个字段必须是消息长度 它被定义为网络字节顺序中的 2 个二进制字节消息长度 例如 我的消息长度是1024 如何将 1024 表示为二