OpenCC icon indicating copy to clipboard operation
OpenCC copied to clipboard

ocd文件在32位,64位下可以通用吗

Open xiaoyifang opened this issue 2 years ago • 4 comments

按我的理解应该是数据格式,32,64应该通用。是这样的吗。

xiaoyifang avatar Jan 28 '22 04:01 xiaoyifang

經過我測試,似乎是不可以的

ayaka14732 avatar Apr 24 '22 03:04 ayaka14732

如果不通用,可以弄成通用的吗? 这个问题不是很重要,请酌情考虑。

xiaoyifang avatar Apr 24 '22 05:04 xiaoyifang

因为在做wasm(32位)移植,ocd2的生成只能靠64位native build,就研究了一下。 我在Ubuntu x64和macOS x64上生成的ocd2文件经diff对比是完全一样的,它们和32位raspbian上生成的不一样,但大小一样 拿HKVariants.ocd2举例,经过cmp -l对比,它们只有8个字节的差异,分为两个连续的4字节,而且64位下的都是0:

 404   0  20
 405   0 210
 406   0 267
 407   0 266
1060   0 120
1061   0 157
1062   0 137
1063   0   1

用gdb运行opencc_dict -i HKVariants.txt -o HKVariants.ocd2 -f text -t ocd2定位了一下,不一致出自 https://github.com/BYVoid/OpenCC/blob/200d01f065805b5f2f20baace4ade59a8a132daf/deps/marisa-0.2.6/lib/marisa/grimoire/trie/louds-trie.cc#L592 底层是 https://github.com/BYVoid/OpenCC/blob/200d01f065805b5f2f20baace4ade59a8a132daf/deps/marisa-0.2.6/lib/marisa/grimoire/vector/flat-vector.h#L172 不一致的原因是32位和64位下MARISA_WORD_SIZE不一样。 我不懂marisa的实现,但我猜测既然64位上都是0那32位的数据应该没什么信息量,然后我替换掉HKVariants.ocd2用opencc -c s2hk.json似乎也是能转换的。 @ayaka14732 请问你的测试方式怎么复现?

eagleoflqj avatar Dec 18 '22 02:12 eagleoflqj

@ayaka14732 请问你的测试方式怎么复现?

我已經不記得了,如果可以的話,就是我記錯了

ayaka14732 avatar Dec 19 '22 06:12 ayaka14732