Cからもらったunsignedな64bit値をビット演算するだけでよいかと思っていたら、数値としても扱う箇所があるのに気付いた。
うーん、uint64_tはプリミティブだから、Javaもlongで受け取って、中で数値に変換できないものか。。。
調べていると、BigIntegerというものがあった。
これを使って、引数はlongで受取り、中で16進数文字列に置き換え、それをBigIntegerにすればよさそうだ。
結果
long: -81985529216486896
long 2byte: -2
BigInteger: 18364758544493064720
BigInteger 2byte: 254
意味も無くビットシフトなんかさせてみたが、ちゃんと正の数として扱っている。
文字列は好きではないのだが、C側でやらなくてよいので、まあよかろう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。