字符串转bytes?

如题:字符串转bytes?

阅读 662
1 个回答

TextEncoder是提供编码能力的,不存在字符串转换

TextEncoder相关可参考https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkts/js-apis-util.md\#textencoder

可参考一下demo试试

function stringToBytes(str: string): Uint8Array {
const encoder = new TextEncoder();
return encoder.encode(str);
}
let str: string = "hello world";
let bytes: Uint8Array = stringToBytes(str);
console.log(bytes); // 输出:Uint8Array(11) [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 ]

在 Java 中将字符串转换为字节数组时,结果可能会包含负数,因为 Java 中的字节是有符号的,即它们的范围是从 -128 到 127。而在 TypeScript 中,使用 Uint8Array 类型时,字节数组中的每个元素都是无符号的 8 位整数,范围从 0 到 255,因此会看到的都是正数。

如果希望 TypeScript 中的字节数组与 Java 中的结果保持一致,您可以选择使用有符号的字节数组类型 Int8Array。以下是一个示例:

function stringToSignedBytes(str: string): Int8Array {
const encoder = new TextEncoder();
const uint8Array = encoder.encode(str);
return new Int8Array(uint8Array);
}
let str: string = "hello world";
let signedBytes: Int8Array = stringToSignedBytes(str);
console.log(signedBytes); // 输出:Int8Array(11) [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 ]

在这个示例中,stringToSignedBytes 函数将字符串转换为有符号的字节数组 Int8Array,然后返回该数组。这样,就可以得到类似于 Java 中的结果,即字节数组中的每个元素都是有符号的,范围从 -128 到 127。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进