Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将函数字节转换为dart_Dart - Fatal编程技术网

如何将函数字节转换为dart

如何将函数字节转换为dart,dart,Dart,我在java中有这样一个函数 public static final byte[] f1504a = {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70}; public static final byte[] bArr = {96, 50, (byte) 152, 96, (byte) 147, 80, (byte) 147, 18, 36, 17, 1, 32, (byte) 145, 17, 4, 84, 0, (

我在java中有这样一个函数

public static final byte[] f1504a = {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70};
public static final byte[] bArr = {96, 50, (byte) 152, 96, (byte) 147, 80, (byte) 147, 18, 36, 17, 1, 32, (byte) 145, 17, 4, 84, 0, (byte) 145, 3, 1, 6, 0, 0, 0, 0, 0, 3, 116, 87, (byte) 175, 116, 7, (byte) 174, (byte) 206, (byte) 244, 15, (byte) 227, (byte) 162, 68, 9, (byte) 244, (byte) 236, 73, 59, 3, 84, 120, (byte) 132, (byte) 182, (byte) 174, (byte) 176, 80, (byte) 195, 0, 17, 1, 32, 3, (byte) 246, 61, 13, (byte) 255, (byte) 255, (byte) 144, 0};

public static String b(byte[] bArr, int i) {
    byte[] bArr2 = new byte[(i * 2)];
    int i2 = 0;
    int i3 = 0;
    for (byte b2 : bArr) {
        if (i2 >= i) {
            break;
        }
        i2++;
        int i4 = b2 & 255;
        int i5 = i3 + 1;
        byte[] bArr3 = f1504a;
        bArr2[i3] = bArr3[i4 >>> 4];
        i3 = i5 + 1;
        bArr2[i5] = bArr3[i4 & 15];
    }
    return new String(bArr2);
}
bbArr,8

结果是:6032986093509312

如何转换为省道或颤振


感谢您的回答,我非常感谢

请阅读您对问题的评论。您不应该期望Stackoverflow只是一种服务,您可以让其他人来做您的工作

说到这里,我有了一些空闲时间,最终用Dart为您的代码编写了一个解决方案,就像一个谜题。不完全确定其工作原理是否与Java代码相同,但它适用于您提供的一个示例:

import 'dart:typed_data';

Uint8List f1504a = Uint8List.fromList(
    [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70]);
Uint8List bArr = Uint8List.fromList([
  96, 50, 152, 96, 147, 80, 147, 18, 36, 17, 1, 32, 145, 17, 4, 84, 0, 145, //
  3, 1, 6, 0, 0, 0, 0, 0, 3, 116, 87, 175, 116, 7, 174, 206, 244, 15, 227, //
  162, 68, 9, 244, 236, 73, 59, 3, 84, 120, 132, 182, 174, 176, 80, 195, 0, //
  17, 1, 32, 3, 246, 61, 13, 255, 255, 144, 0
]);

String b(Uint8List bArr, int i) {
  final bArr2 = Uint8List(i * 2);
  var i2 = 0, i3 = 0;

  for (final b2 in bArr) {
    if (i2 >= i) {
      break;
    }
    i2++;

    final i4 = b2 & 255;
    final i5 = i3 + 1;
    final bArr3 = f1504a;
    bArr2[i3] = bArr3[i4 >> 4];
    i3 = i5 + 1;
    bArr2[i5] = bArr3[i4 & 15];
  }

  return String.fromCharCodes(bArr2);
}

void main() {
  print(b(bArr, 8)); // 6032986093509312
}

julemand101的答案是Java代码的完美翻译。 更惯用的Dart版本可能类似于:

导入“dart:键入的_数据”; final byteTable=Uint8List.fromList[ 96, 50, 152, 96, 147, 80, 147, 18, 36, 17, 1, 32, 145, 17, 4, 84, 0, 145, // 3, 1, 6, 0, 0, 0, 0, 0, 3, 116, 87, 175, 116, 7, 174, 206, 244, 15, 227, // 162, 68, 9, 244, 236, 73, 59, 3, 84, 120, 132, 182, 174, 176, 80, 195, 0, // 17, 1, 32, 3, 246, 61, 13, 255, 255, 144, 0 ]; //[bytes]的第一个[length]字节的十六进制表示形式。 字符串到HEXUINT8列表字节,整数长度{ 常量六位数=0123456789ABCDEF; 最终结果字节=Uint8Listlength*2; 如果length>bytes.length=bytes.length; 对于变量i=0,j=0;i>4; 结果字节[j++]=六位数。代码单位字节&15; } 返回String.fromCharCodesresultBytes; } 真空总管{ printtoHexbyteTable,8;//6032986093509312 }
Uint8List是您在dart中查找的数据类型。欢迎使用SO。要求别人为你写代码并不是这个网站的真正目的。我建议重新编写您的问题,以包括dart实现,无论它处于何种功能状态,到目前为止您尝试了什么,哪些有效/无效,等等。具体问题将得到具体的答案,一般情况下我该如何做此查询更适合其他站点。您了解代码的作用吗?就我所见,它只是从bArr获取第一个I字节,并将字节格式化为十六进制。因此,请尝试在web上搜索以dart或Flatter方式执行此操作的代码。