duangsuse::Echo
718 subscribers
4.26K photos
130 videos
583 files
6.48K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
java.lang.AssertionError: expected:<2008796381> but was:<-17545>

现在就暴露出底层的一个问题,Java 侧使用的是 read():Int 的 InputStream,因为默认是读 unsigned byte,而我要么进行 Byte.uExt() 要么改回原来的封装,要我改回来是断然不可的
可是那样就出现 unsigned.toByte().uExt(),莫名其妙多了两个计算,该死没无符号的 Java
只好弄个 typealias Nat8 = Int,然后改回来算了,免得 uExt 来 uExt 去的,而且那个还要 if <0 判符号位,相当麻烦
唉简单也有简单的难处,要是 Jawa 支持 unsigned integers 就不必操心了
"It works, it works!!!"
虽然我又修复了 N 个 bug,并且是通过迫真调试而非理智分析找到才能用的,但还是能用,这就是……!!!
duangsuse::Echo
唉简单也有简单的难处,要是 Jawa 支持 unsigned integers 就不必操心了
其实支持如果仅仅有 ushl 这样的支持也不吼啊,因为数值带不带符号位说到底表示上还是有大区别
现在我有点混淆 Nat8 和 byte 这两个概念的意思……
规律就是:只要和 Nat8 不直接相关的(比如一个函参名),都叫 byte……
This media is not supported in your browser
VIEW IN TELEGRAM
考虑一下在适合的时候抛出 EOFException
This media is not supported in your browser
VIEW IN TELEGRAM
现在基本可以认为,底层读写部分快写完了
就剩下测试 Writer 了
This media is not supported in your browser
VIEW IN TELEGRAM
现在我修复了 Writer 里关于 bitwise operation 的 bug,程序的底层输入输出架构现在可用了。
程序尤其注重抽象性,连测试都是平台不直接相关的,方便移植到各种各样的底层来使用。
不像 Parser 的函数式接口可以有方便的 then,这里做不到,因为既要能读又要能写,不可能单独在读的时候转化为另一种数据类型。
其实也不是不可以,但那样的收益就太低了,要同时写 from 和 to
const val signBit = 0x0000_8000
internal fun Int16.uExt(): Int32 = if (this < 0) {
signBit.or(Int16.MAX_VALUE.minus(this).inv())
} else this.toInt()
This media is not supported in your browser
VIEW IN TELEGRAM
正在考虑还有什么没有完成的…… 啊,是 typed array。可是这个没法完成的…… 好像也不是
Bitflags 也可以考虑一下