apollo-core 十进制转十六进制(原码、反码、补码)

apollo-core中的apollo.core.utils中的相关代码及测试:

104 结果为 68
-104结果为 98

原理:
1. 104计算方法:
(1) 二进制表示为: 0110,1000
(2) 二进制计算:
0110, 1000 & 0xF = 0110, 1000 & 0000, 1111 = 0000, 1000
0110, 1000 >>4 = 0000, 0110 & 0xF = 0000, 0110 & 0000, 1111 = 0000, 0110
(3) 转十进制:
0000, 1000 => 1 * 2^3 = 8
0000, 0110 => 1 * 2^2 + 1 * 2 = 6

2. -104计算方法
(1) 二进制表示: 1110, 1000 (首位为符号位)
(2) 二进制计算
源码: 1110, 1000
反码(除符号位外取反): 1001, 0111
补码(反码+1): 1001,1000
1001,1000 & 0xF = 0000, 1000
1001,1000 >> 4 = 0000, 1001 & 0xF = 0000, 1001
(3) 转十进制:
0000, 1000 => 1 * 2^3 = 8
0000, 1001 => 1 * 2^3 + 1 = 9

3. 补充 -104 >>4 = -7
-104补码右移4位后: 0000, 1001
反向转原码: 1001反向取补, 即-1为: 1000
1000再转为原码: 1111,首位符号位: -1 * (1 * 2^2 + 1*2^1 + 1*2^0) = -1 * (4 + 2 + 1) = -7


2. -104的二进制表示为: 1110, 1000(首位为符号位)

// ByteUtilTests.java
@Test
public void testToHexString() {
    System.out.println(ByteUtil.toHexString(new byte[] {(byte) 104}));
    System.out.println(ByteUtil.toHexString(new byte[] {(byte) -104}));
    Assert.assertEquals("", ByteUtil.toHexString(new byte[] {}));
    Assert.assertEquals("98", ByteUtil.toHexString(new byte[] {(byte)-104}));
}


// ByteUtil.java
private static final char[] HEX_CHARS = new char[] {
      '0', '1', '2', '3', '4', '5', '6', '7',
      '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };


public static String toHexString(byte[] bytes) {
    char[] chars = new char[bytes.length * 2];
    int i = 0;
    for (byte b : bytes) {
      chars[i++] = HEX_CHARS[b >> 4 & 0xF];
      chars[i++] = HEX_CHARS[b & 0xF];
    }
    return new String(chars);
  }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
npm warn deprecated apollo-server-core@3.12.0: the `apollo-server-core` package has been deprecated. 这个警告意味着`apollo-server-core`包已被废弃。废弃意味着它将在将来的版本中不再被维护或更新。当我们在使用npm安装或更新项目依赖时,如果看到这个警告,就意味着有一些问题需要解决。 在本例中,警告涉及到`apollo-server-core` 版本3.12.0。这个包是Apollo的一个核心组件,用于构建GraphQL服务器。然而,该版本已被废弃,这意味着它存在一些问题或者有更好的替代选择。 废弃的软件包存在一些风险,因为它们不再得到维护或更新。这可能导致安全漏洞、缺陷或不兼容问题。所以,我们需要尽快寻找替代方案。 为了解决这个问题,我们可以查看`apollo-server-core`的文档或发布信息,以了解更多关于废弃的原因和可能的替代包的信息。通常,`apollo-server-core`的维护者会提供一些指导或建议,告诉我们如何迁移到更新的版本或其他相关的包。 我们可以使用命令`npm outdated`来检查是否有更近的版本可用,并尝试更新到最新的兼容版本。如果没有直接的替代包,我们可以考虑使用类似的库或搜索其他的GraphQL服务器解决方案。 总之,当我们看到npm的警告废弃某个软件包时,我们需要密切关注相关的文档和发布信息,寻找替代方案,并尽快做出调整以避免可能带来的问题或风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值