如何将字符串中的每个char转换为8位int? JAVA

问题描述 投票:0回答:1

我被建议使用类似TCP的校验和,它由(整数)序列和ack字段值的总和组成,添加到数据包的有效负载字段的逐个字符的总和(即,将每个字符视为如果它是一个8位整数,只需将它们加在一起)。

我假设它会遵循:

char[] a = data.toCharArray();
for (int i = 0; int < len; i++) {
   ...
}

虽然我对如何完成实际转换非常无能为力?

我的datastring,我希望通过字符串(转换为char数组(但如果有更好的方法来做这个让我知道!))现在我已经准备好迭代但是如何转换每个字符到一个int。然后我将总计总和。

java string type-conversion bit
1个回答
2
投票

由于String包含Unicode,而char是Unicode的两字节UTF-16实现,因此首先将String转换为字节可能更好:

byte[] bytes = data.getBytes(StandardCharsets.UTF_8);
data = new String(bytes, StandardCharsets.UTF_8); // Inverse.

int crc = 0;
for (byte b : bytes) {
    int n = b & 0xFF; // An int 0 .. 255 without sign extension
    crc ^= n;
}

现在,您可以处理String的任何Unicode内容。当使用足够的ASCII字母时,UTF-8是最佳的,如中文HTML页面。 (对于中文纯文本,UTF-16可能会更好。)

© www.soinside.com 2019 - 2024. All rights reserved.