cuốn sách gpt4 ai đã làm

java - US-ASCII 字符串(解)压缩到/从字节数组(7 位/字符)

In lại Tác giả: Walker 123 更新时间:2023-11-29 04:08:12 28 4
mua khóa gpt4 Nike

众所周知,ASCII使用7位来编码字符,所以用来表示文本的字节数总是小于文本字母的长度

Ví dụ:

    StringBuilder text = new StringBuilder();
IntStream.range(0, 160).forEach(x -> text.append("a")); // generate 160 text
int letters = text.length();
int bytes = text.toString().getBytes(StandardCharsets.US_ASCII).length;
System.out.println(letters); // expected 160, actual 160
System.out.println(bytes); // expected 140, actual 160

luôn luônletters = bytes , 但预期是 letters > bytes .

主要问题:hiện hữusmpp协议(protocol) sms正文必须是 <= 140字节,如果我们使用 ascii编码,那么你可以写160字母 =(140*8/7) ,所以我想将文本编码为 7-bit based ascii , 我们正在使用 JSMPP图书馆

任何人都可以向我解释并指导我正确的方法,在此先感谢(:

câu trả lời hay nhất

(160*7-160*8)/8 = 20,因此您预计脚本末尾使用的字节数会减少 20 个。但是,寄存器有一个最小大小,所以即使你不使用所有位,你仍然不能将它连接到另一个值,所以你仍然使用 8 位字节作为你的 ASCII 码,这就是为什么你得到相同的号码。比如小写的“a”在ASCII中是97

01100001

注意前导零仍然存在,即使它没有被使用。您不能只使用它来存储另一个值的一部分。

结论是,在纯 ASCII 中,字母必须始终等于字节数。

(或者想象一下将 7 号物体放入 8 号盒子中。您不能将物体分成几 block ,因此盒子的数量必须等于物体的数量 - 至少在这种情况下是这样。)

关于java - US-ASCII 字符串(解)压缩到/从字节数组(7 位/字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56884877/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress