【问题标题】:Convert int to two bytes in hex?将 int 转换为十六进制的两个字节?
【发布时间】:2018-03-21 04:53:13
【问题描述】:

上下文:我正在开发用于建筑 LED 矩阵的照明协议转换器,并且需要以非常特定的方式对字节字符串进行编码,以便我的硬件能够识别标头。

问:如何将一个 int 转换为两个字节,以便我可以分别使用它们?

例子:

我要转换

var aDynamicValue = 511 //where value will range from 0-511

到如下列表:[0x01, 0xFF]

这样我就可以了

<BytesBuilder> magicString.add(--the bytes above--)

谢谢

【问题讨论】:

    标签: dart


    【解决方案1】:

    typed_data 和int.toRadixString(16) 可用于从整数中获取十六进制:

    final list = new Uint64List.fromList([511]);
    final bytes = new Uint8List.view(list.buffer);
    final result = bytes.map((b) => '0x${b.toRadixString(16).padLeft(2, '0')}');
    print('bytes: ${result}');
    

    【讨论】:

      【解决方案2】:

      将位移位与逻辑AND 一起使用以屏蔽除前 8 位之外的所有位。伪代码:

      a = 511;
      byte1 = a & 0xff;
      byte2 = (a >> 8) & 0xff;
      

      【讨论】:

        猜你喜欢
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 2013-09-12
        • 2015-09-17
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 2018-05-04
        相关资源
        最近更新 更多