gpt4 book ai didi

java - 将整数编码为字节字符串

转载 作者:行者123 更新时间:2023-12-02 08:49:58 24 4
gpt4 key购买 nike

我遇到了这种将整数编码为字节字符串的方式

  public String intToString(int x) {
char[] bytes = new char[4];
for(int i = 3; i > -1; --i) {
bytes[3 - i] = (char) (x >> (i * 8) & 0xff);
}
return new String(bytes);
}

我不太明白为什么我们要按这个顺序迭代

(x >> (24) & 0xff);  //stored in bytes[0]
(x >> (16) & 0xff); //stored in bytes[1]
(x >> (8) & 0xff); //stored in bytes[2]
(x >> (0) & 0xff); //stored in bytes[3]

而不是相反

这用于解码

  public int stringToInt(String bytesStr) {
int result = 0;
for(char b : bytesStr.toCharArray()) {
result = (result << 8) + (int)b;
}
return result;
}

我知道& 0xff用于一次屏蔽和收集8位。我只是不明白为什么要按这个顺序?谁能解释一下吗?谢谢。

最佳答案

您可以使用任何您想要的顺序。计算机编号中字节的顺序称为字节顺序 https://en.wikipedia.org/wiki/Endianness

您在这里看到的内容首先是最高有效字节,称为“大端字节序”。它用于许多网络协议(protocol)和文件格式。相反的顺序称为“小端”,它是当今大多数机器(x86 和大多数 ARM CPU)上的 native 字节顺序。根据您的操作,一个订单可能比另一个更方便。

关于java - 将整数编码为字节字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60842165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com