将带符号的十进制转换为使用二进制补码编码的十六进制

2024-01-05

我需要编码signed通过二进制补码表示法将整数表示为十六进制。例如我想转换

e.g. -24375 to 0xffffa0c9.

到目前为止,我一直在以下几方面开展工作:

parseInt(-24375).toString(2)
> "-101111100110111"    

这与 Wolfram Alpha 相匹配displays http://www.wolframalpha.com/input/?i=-24375%20to%20binary,但我不确定如何获取数字的有符号 24 位 int 表示形式 (ffffa0c9)。

我已经弄清楚如何获取无符号二进制数并将其表示为二进制补码:

~ parseInt("101111100110111", 2) + 1
> -23475

但我不确定是否将该数字的二进制表示形式转换为十六进制。

有任何想法吗?


这是一个非常简单的解决方案,使用parseInt :

function DecimalHexTwosComplement(decimal) {
  var size = 8;

  if (decimal >= 0) {
    var hexadecimal = decimal.toString(16);

    while ((hexadecimal.length % size) != 0) {
      hexadecimal = "" + 0 + hexadecimal;
    }

    return hexadecimal;
  } else {
    var hexadecimal = Math.abs(decimal).toString(16);
    while ((hexadecimal.length % size) != 0) {
      hexadecimal = "" + 0 + hexadecimal;
    }

    var output = '';
    for (i = 0; i < hexadecimal.length; i++) {
      output += (0x0F - parseInt(hexadecimal[i], 16)).toString(16);
    }

    output = (0x01 + parseInt(output, 16)).toString(16);
    return output;
  }
}

对于长度最大为 16 的十六进制应该可以正常工作。

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

将带符号的十进制转换为使用二进制补码编码的十六进制 的相关文章

随机推荐

  • Eclipse - 将所需的库提取/打包到同一个可运行 JAR 中

    使用 Eclipse 将项目导出为 Runnable JAR 文件时 有以下三种选择 1 Extract required libraries into generated JAR 2 Package required libraries
  • Haskell:Arch Linux 上缺少的 C 库可以在 Ubuntu 上运行

    我最近将工作电脑从Ubuntu to Arch Linux 我现在收到以下错误 我正在使用堆栈来构建我的项目 setup Simple Cabal 1 22 4 0 ghc 7 10 2 缺少对 外国的 图书馆 缺少 C 库 HSrts g
  • 如何在使用 Typegoose 获取数据的同时使用类转换器序列化 Nest js 响应?

    我一直在尝试使用 Typegoose 使用类转换器库来完成 Mongodb 序列化部分的 NestJs 示例 给出的例子在https docs nestjs com techniques serialization https docs n
  • 从字符串转换为日期抛出无法解析的日期异常[重复]

    这个问题在这里已经有答案了 我想将日期转换为字符串 但遇到一些问题 我的代码是这样的 SimpleDateFormat formato new SimpleDateFormat EEE MMM dd HH mm ss z yyyy Stri
  • iPhone 上的 jQuery Mobile + PhoneGap 无法加载页面

    我正在尝试编写一个简单的phonegap jqm 应用程序 它从远程服务器获取页面 mobile loadPage http mydomain com Mobile MyPage aspx done function alert done
  • 可以在 svg 中嵌入 youtube 视频吗?

    Sozi 是一个 inkscape 扩展 允许在支持 svg 的 Web 浏览器中查看时对 svg 文件进行类似 Prezi 的平移 缩放 youtube 视频可以嵌入到 Prezi 中 我希望能够将 youtube 视频 或任何类型的视频
  • Java:版本化数据结构?

    我有一个非常简单的数据结构 基本上是一个包含一些数组和单个值的结构 但我需要记录数据结构的历史记录 以便我可以在任何时间点有效地获取数据结构的内容 有没有相对简单的方法来做到这一点 我能想到的最好的方法是将整个数据结构封装为通过将数据存储在
  • 从 OSX 中删除 iOS SDK

    这不是一个编程问题 而是关于 SDK 和 IDE 的问题 在过去的几年里 我已经安装了大量不同的 XCode 现在我的硬盘几乎已满 每个 SDK 的运行速度约为 5 GB 而且我的存储空间越来越低 我有几个问题 3个问题 我可以删除旧的吗
  • OSGi 线程模型

    我在网上搜索过但未能找到满意的答案 OSGi 容器中的线程模型是什么 例如 它是否只是为每个注册的包生成一个新线程 任何有关线程模型的参考都会很棒 您还没有找到任何东西 因为不存在 OSGi 线程模型 这样的东西 捆绑包只是存在并且不 具有
  • Android 在选项卡中的嵌套活动中使用 startActivityForResult。

    我正在编写一个应用程序 该应用程序由在 tabhost 中创建的多个选项卡组成 intent new Intent setClass this Home class spec tabHost newTabSpec Home setIndic
  • 是否有 R 函数用于按组连续估算缺失年份值?

    我的数据框看起来像 df lt data frame ID c A A A A B B B B C C C C D D D D grade c KG 01 02 03 KG 01 02 03 KG 01 02 03 KG
  • 自动从包中的sysdata.rda加载数据

    我花了很多时间寻找可能是一个非常基本的问题的答案 但我就是找不到解决我的问题的方法 我发现的最接近的是这次交流 https stat ethz ch pipermail r devel 2011 August 061786 html从几年前
  • Android studio - 模拟器:无法 statvfs() 路径错误

    当我想在 Android Studio 3 2 中通过模拟器运行我的 android 应用程序时 出现此错误 我只想运行 Hello world 示例 Emulator Couldn t statvfs path 我遇到了同样的问题 并意识
  • 使用预先存在的访问令牌通过 ASP.NET 创建 YouTube 服务

    我一直在开发一个网站 供用户将视频上传到共享的 YouTube 帐户以供以后访问 经过大量工作 我已经能够获得活动令牌和可行的刷新令牌 然而 初始化的代码YouTubeService对象看起来像这样 UserCredential crede
  • 为 webrtc 实现 janus 网关

    我正在按照 janus 文档构建视频 MCU 系统 我根据自述文件安装了它的所有依赖项 http janus conf meetecho com docs 之后当我使用运行脚本时sh install sh我收到以下错误 In file in
  • WebRTC 候选信息末尾的数据是什么?

    我使用 Chrome 中的 WebRTC API 以及我自己根据 W3C 规范和其他问题编写的 WebSocket 脚本设置了一个基本的视频聊天应用程序 但有时 当一台 PC 通过 WebSocket 连接将 ICE 候选信息发送到另一台
  • PyCharm 性能优于 CMD python 命令

    我正在开发一个用于串行通信的 python 脚本 我正在 pyCharm 4 5 python27 和 windows 中开发它 我刚刚意识到当我在 pyCharm 上执行它时 它比我使用命令时运行得更快 python main py or
  • 证明匹配语句

    为了解决一个练习 我有以下代表整数的定义 Inductive bin Type Zero bin Twice bin gt bin TwiceOne bin gt bin 这个想法是 Twice x is 2 x 两次一x is 2 x 1
  • Ruby:Windows 路径转换

    我经常在脚本中使用长路径 因为我在 Windows 上 所以我必须将这些长路径转换为 nix 样式 并使用斜杠而不是反斜杠 如果此后您复制该路径以转到该文件夹 这没什么困难 但很烦人 因为在资源管理器中您必须再次执行相反的操作 所以我做了一
  • 将带符号的十进制转换为使用二进制补码编码的十六进制

    我需要编码signed通过二进制补码表示法将整数表示为十六进制 例如我想转换 e g 24375 to 0xffffa0c9 到目前为止 我一直在以下几方面开展工作 parseInt 24375 toString 2 gt 10111110