如何将字符串中的每个字符转换为8位整数?JAVA
有人建议我使用一种类似TCP的校验和,它由(整数)序列和ack字段值之和组成,添加到数据包有效负载字段的字符和中(即,将每个字符视为一个8位整数,只需将它们相加) 我假设它将沿着以下路线进行:如何将字符串中的每个字符转换为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
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失败了。