我正在将一堆旧的制表符分隔的 MySQL 数据库转储文件转换为协议缓冲区并遇到了障碍。MySQL 表包含一个类型为 的字段int(11) unsigned
,我已将其映射到文件uint32
中的protobuf .proto
。在解析 MySQL 记录并尝试将它们转换为 protobuf 消息时,很容易使用Integer.valueOf(String)
(或Long.valueOf(String)
避免溢出)解析该字段。但是,Protocol Buffers Language Guide在这里指出,在 Java 中,uint32
s 使用int
数据类型表示,但第一位被重新解释为最高位而不是符号位。
因此,在我编写自己的String
-> uint32
-flavored-int
解析器之前,我认为值得询问其他人是否已经解决了这个特定问题。String
将MySQL 的表示形式转换为Javaint unsigned
中的协议缓冲区的正确方法是什么?uint32