
import org.apache.commons.codec.binary.BinaryCodec; System.out.println(BinaryCodec.toAsciiString(new byte[] { 'a' })); // output 01100001 System.out.println(BinaryCodec.toAsciiString(new byte[] { 'b' })); // output 01100010 System.out.println(BinaryCodec.toAsciiString(new byte[] { 'a', 'b' })); // output 0110001001100001(ba), why not 0110000101100010(ab)? // 为什么设计成倒序呢? { var sle = "abc".getBytes(StandardCharsets.UTF_16LE); System.out.println(Bytes.asList(sle).stream() .map(b -> StringUtils.leftPad(Integer.toBinaryString(b), 8, '0')) .collect(Collectors.joining(","))); // out 01100001,00000000,01100010,00000000,01100011,00000000 System.out.println(BinaryCodec.toAsciiString(sle).replaceAll("(.{8})", "$1,")); // out 00000000,01100011,00000000,01100010,00000000,01100001, } { var sbe = "abc".getBytes(StandardCharsets.UTF_16BE); System.out.println(Bytes.asList(sbe).stream() .map(b -> StringUtils.leftPad(Integer.toBinaryString(b), 8, '0')) .collect(Collectors.joining(","))); // out 00000000,01100001,00000000,01100010,00000000,01100011 System.out.println(BinaryCodec.toAsciiString(sbe).replaceAll("(.{8})", "$1,")); // out 01100011,00000000,01100010,00000000,01100001,00000000, } 1 JinTianYi456 OP self-up-1 |
2 FucUrFrd Mar 25, 2021 via Android @JinTianYi456 小同志您好,这是正序,这是预期的 翻开人大附小的 c 语言竞赛课本,01 表达方式左边是最高位 用高级知识,是 little endian, 如果用你的答案就是 big endian, 任何高级技术要回归本源才能获得真谛 |
3 JinTianYi456 OP @FucUrFrd #2 测试之后,并不是你说的这回事,请看第 1 条附言 |
4 JinTianYi456 OP 或许是这样理解的: BinaryCodec 是把整一串已 big-endian 来排的. Soga :dog (不能以字符编码的单字符 BE 来理解的) |