如何将字符串中的每个字符转换为 8 位 int? JAVA
How to convert each char in string to 8 bit int? JAVA
我被建议使用类似 TCP 的校验和,它由(整数)序列和 ack 字段值的总和组成,添加到数据包有效负载字段的逐字符总和(即, 将每个字符视为一个 8 位整数,然后将它们相加)。
我假设它会遵循以下路线:
char[] a = data.toCharArray();
for (int i = 0; int < len; i++) {
...
}
尽管我对如何完成实际转换一无所知?
我的 data
是 string
,我希望遍历字符串(转换为字符数组(如果有更好的方法请告诉我!))现在我准备好迭代如何将每个字符转换为 int。然后我会总结总数。
由于 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;
}
现在您可以处理字符串的任何 Unicode 内容。当使用足够多的 ASCII 字母时,UTF-8 是最佳选择,例如中文 HTML 页面。 (对于中文纯文本,UTF-16 可能更好。)
我被建议使用类似 TCP 的校验和,它由(整数)序列和 ack 字段值的总和组成,添加到数据包有效负载字段的逐字符总和(即, 将每个字符视为一个 8 位整数,然后将它们相加)。
我假设它会遵循以下路线:
char[] a = data.toCharArray();
for (int i = 0; int < len; i++) {
...
}
尽管我对如何完成实际转换一无所知?
我的 data
是 string
,我希望遍历字符串(转换为字符数组(如果有更好的方法请告诉我!))现在我准备好迭代如何将每个字符转换为 int。然后我会总结总数。
由于 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;
}
现在您可以处理字符串的任何 Unicode 内容。当使用足够多的 ASCII 字母时,UTF-8 是最佳选择,例如中文 HTML 页面。 (对于中文纯文本,UTF-16 可能更好。)