Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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
如何将字符串中的每个字符转换为8位整数?JAVA_Java_String_Type Conversion_Bit - Fatal编程技术网

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

如何将字符串中的每个字符转换为8位整数?JAVA,java,string,type-conversion,bit,Java,String,Type Conversion,Bit,有人建议我使用一种类似TCP的校验和,它由(整数)序列和ack字段值之和组成,添加到数据包有效负载字段的字符和中(即,将每个字符视为一个8位整数,只需将它们相加) 我假设它将沿着以下路线进行: char[] a = data.toCharArray(); for (int i = 0; int < len; i++) { ... } char[]a=data.toCharArray(); 对于(int i=0;int

有人建议我使用一种类似TCP的校验和,它由(整数)序列和ack字段值之和组成,添加到数据包有效负载字段的字符和中(即,将每个字符视为一个8位整数,只需将它们相加)

我假设它将沿着以下路线进行:

char[] a = data.toCharArray();
for (int i = 0; int < len; i++) {
   ...
}
char[]a=data.toCharArray();
对于(int i=0;int
虽然我不知道如何才能完成真正的转换


我的
数据
字符串
,我希望遍历字符串(转换为字符数组(如果有更好的方法,请告诉我!),现在我准备迭代如何将每个字符转换为整数。然后我将求和总数。

因为字符串包含Unicode,而
char
是Unicode的两字节UTF-16实现,最好先将字符串转换为字节:

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内容。UTF-8在使用足够的ASCII字母时是最佳的,如中文HTML页面。(对于中文纯文本UTF-16可能更好。)

简单:在For循环中:
intval=a[i]这将转换循环中的当前字符?我现在如何从
[B@106d69c
到整数?
字节
是一个有符号的8位整数,因此您几乎就到了。我为循环添加了一个示例。字节数组的toString只是它的类型代码
[B
(字节数组)而对象地址/句柄
@106d69c
上面的循环为我提供了一个0的结果,我不明白你为什么要使用异或操作数?这只是一个例子,我留下的计算结果是你的努力(+=)和那个ack字段。所以不要建议有结果;info失败了。