如何将函数字节转换为dart
我在java中有这样一个函数如何将函数字节转换为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, (
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
Uint8List是您在dart中查找的数据类型。欢迎使用SO。要求别人为你写代码并不是这个网站的真正目的。我建议重新编写您的问题,以包括dart实现,无论它处于何种功能状态,到目前为止您尝试了什么,哪些有效/无效,等等。具体问题将得到具体的答案,一般情况下我该如何做此查询更适合其他站点。您了解代码的作用吗?就我所见,它只是从bArr获取第一个I字节,并将字节格式化为十六进制。因此,请尝试在web上搜索以dart或Flatter方式执行此操作的代码。