タイトル : Re^6: Double型のアスキー変換について 投稿日 : 2011/07/02(Sat) 16:18 投稿者 : ハイド
> > > > Double値 = 65.0 → 'A'には変換できています。 > > > > 問題は "AAAAAAAA"など8バイトフルに使った場合です。 > > > > 8バイトなので8文字OKだと思っているのですが、どうも桁落ちしてしまうらしく正しい結果が得られないのです。 > > > > > > そうなるとDoubleが無理があるのかも、Int64とかUInt64にしてみてはどうでしょう? > > > > 一応、Longでは可能だということは確認しています。 > > 客先からDouble型という指定がありましたので色々と模索しているところです。 > > もしVB的に実現不可能なのであればLongにせざるを得ないかもと思っています。 > > 一応、 > > Dim byts = New Byte() {65, 65, 65, 65, 65, 65, 65, 65} > Dim a = BitConverter.ToDouble(byts, 0) > Dim byts2 = BitConverter.GetBytes(a) > > を実行してみましたが、byts,byts2の内容は同じでしたが、どういう場合が駄目なのでしょう?aの中身を評価して表示されたものを設定するのは駄目ですよ? 以下のような感じです。 Dim dblValue As Double Dim lngValue As Long Dim bytDatas() As Byte dblValue = 4702111234474983745 ' (ASCII:AAAAAAAA) lngValue = CLng(dblValue) bytDatas = System.BitConverter.GetBytes(lngValue) bytDatasの中身を見ると、 (0):0 (1):64 (2):65 (3):65 (4):65 (5):65 (6):65 (7):65 lngValueの時点で桁落ちしているのです。 |