tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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の時点で桁落ちしているのです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。