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 2021-03-25 12:42:16 +08:00 via Android 1
@JinTianYi456
小同志您好,这是正序,这是预期的 翻开人大附小的 c 语言竞赛课本,01 表达方式左边是最高位 用高级知识,是 little endian, 如果用你的答案就是 big endian, 任何高级技术要回归本源才能获得真谛 |
3
JinTianYi456 OP @FucUrFrd #2 测试之后,并不是你说的这回事,请看第 1 条附言
|
4
JinTianYi456 OP 或许是这样理解的: BinaryCodec 是把整一串已 big-endian 来排的. Soga :dog (不能以字符编码的单字符 BE 来理解的)
|