Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル2進数を16進数に変換
記事No16708
投稿日: 2011/05/18(Wed) 18:17
投稿者やま
OS:Windows
Access Version:2000

こんにちは。
VBA初めて2週間の新人です。

質問なのですが、SQLで「バイナリ型」のフィールドを持つテーブルを作成し、
そこに2進数で16桁(2バイト?フィールドサイズは32)
入力し、それを16進数に変換してエクスポートしたいのですが、ネットなどで調べても変換の仕方が
いまいちわかりません・・・

サクラエディタで、2進数が16進数に変換された状態で出力したいのです。
(バイナリデータはバイト配列で出力されるようで、現状はそうなっています)

よろしければヒントをお教えください。

タイトルRe: 2進数を16進数に変換
記事No16709
投稿日: 2011/05/18(Wed) 18:43
投稿者猫マンマ
hex関数とかOct関数で16進数や8進数に変換したらどう? クエリで
で、それをエクスポートすれば簡単かと思います

タイトルRe^2: 2進数を16進数に変換
記事No16710
投稿日: 2011/05/18(Wed) 20:30
投稿者やま
> hex関数とかOct関数で16進数や8進数に変換したらどう? クエリで
> で、それをエクスポートすれば簡単かと思います

猫マンマさん、ご回答ありがとうございます。

さっそくSQLの参考書とaccessのヘルプ等を見ながらチャレンジしてみたいと思います。
ちなみに、引数にテーブルのフィールドを指定することなどできるのでしょうか?
(色々試行錯誤してみます)

タイトルRe^3: 2進数を16進数に変換
記事No16711
投稿日: 2011/05/18(Wed) 20:42
投稿者猫マンマ
> ちなみに、引数にテーブルのフィールドを指定することなどできるのでしょうか?

クエリのデザインビューで

t1というテーブルのフィールドに2進数があるとします

ーーーー
t1  |
ーーーー
2進数 |
ーーーー

ーーーーーーーーーーーーーーーーーー
フィールド| 16進数:Hex([2進数]) |
テーブル |            |
並べ替え |             |
表示   |   [レ]                 |
抽出条件 |                        |
または  |                        |
ーーーーーーーーーーーーーーーーーー

てな感じのクエリを作成してこのクエリをエクスポートすればいいんじゃない?
条件抽出とかあるとおもうけど
処理を分けてから考えたほうが確実ですね

タイトルRe^4: 2進数を16進数に変換
記事No16712
投稿日: 2011/05/18(Wed) 21:42
投稿者やま
> > ちなみに、引数にテーブルのフィールドを指定することなどできるのでしょうか?
>
> クエリのデザインビューで
>
> t1というテーブルのフィールドに2進数があるとします
>
> ーーーー
> t1  |
> ーーーー
> 2進数 |
> ーーーー
>
> ーーーーーーーーーーーーーーーーーー
> フィールド| 16進数:Hex([2進数]) |
> テーブル |            |
> 並べ替え |             |
> 表示   | [レ] |
> 抽出条件 | |
> または  | |
> ーーーーーーーーーーーーーーーーーー
>
> てな感じのクエリを作成してこのクエリをエクスポートすればいいんじゃない?
> 条件抽出とかあるとおもうけど
> 処理を分けてから考えたほうが確実ですね

図での説明、ありがとうございます。
ひとまず試す感じでやってみました!そしてら、「式1」という文字のみ出力されていました…
指定の仕方が悪かったんですよね、きっと。
テーブルにはフィールドが3つあって、全部出力したいのですが、可能でしょうか?
あー難しい〜

タイトルRe^5: 2進数を16進数に変換
記事No16713
投稿日: 2011/05/18(Wed) 21:48
投稿者猫マンマ
> テーブルにはフィールドが3つあって、全部出力したいのですが、可能でしょうか?
> あー難しい〜
すまん、スリープモード発動中www
テーブルのフィールド名とデータ型、データサイズをUPして
内容のサンプルがあればなおよし^^
返信は仕事の都合で明日の夕方以降になるがそれまでに
アクセスの神様からのお告げでCLOSEすることを祈っています
ではUPまってます^^

追記 フィルド3つは全部出力できます16進数に変換したじょうたいで
ではzzzz

タイトルやっぱりわかりません・・・
記事No16714
投稿日: 2011/05/19(Thu) 10:02
投稿者やま
> > テーブルにはフィールドが3つあって、全部出力したいのですが、可能でしょうか?
> > あー難しい〜
> すまん、スリープモード発動中www
> テーブルのフィールド名とデータ型、データサイズをUPして
> 内容のサンプルがあればなおよし^^
> 返信は仕事の都合で明日の夕方以降になるがそれまでに
> アクセスの神様からのお告げでCLOSEすることを祈っています
> ではUPまってます^^
>
> 追記 フィルド3つは全部出力できます16進数に変換したじょうたいで
> ではzzzz

やはり指定の仕方がわかりません・・・
フィールド名:ID、テキスト、バイナリ
データ型:オートナンバー、テキスト、バイナリ
データサイズ:長整数型、255、32

ちなみにHexって、10進数を16進数に変換する関数では?

タイトルRe: やっぱりわかりません・・・
記事No16716
投稿日: 2011/05/19(Thu) 18:48
投稿者猫マンマ
> ちなみにHexって、10進数を16進数に変換する関数では?

おお!!2進数やね、すんません
お詫びに過去ログで
No118993 2進数を10進数に変換
No128418 16進数を2進数に変換
をみつけました


トップページの
フォーラムの過去ログを対象
に記事番号を入力するとサクと検索できます

タイトルRe^2: やっぱりわかりません・・・
記事No16717
投稿日: 2011/05/19(Thu) 21:03
投稿者やま
> > ちなみにHexって、10進数を16進数に変換する関数では?
>
> おお!!2進数やね、すんません
> お詫びに過去ログで
> No118993 2進数を10進数に変換
> No128418 16進数を2進数に変換
> をみつけました
>
>
> トップページの
> フォーラムの過去ログを対象
> に記事番号を入力するとサクと検索できます

猫マンマさん
ざわざ検索していただき、ありがとうございます。
ちらっと見たりはしていたのですが、むむむーってかんじです´`

タイトルRe: 2進数を16進数に変換
記事No16715
投稿日: 2011/05/19(Thu) 18:33
投稿者Dodonpa
こんにちは。失礼します。

>SQLで「バイナリ型」のフィールドを持つテーブルを作成し、
Jetではバイナリ型は未サポートです。ですから、二進数をバイナリ型としてテーブルに
保持することはできません。

>ネットなどで調べても変換の仕方がいまいちわかりません・・・
どこまではわかったのでしょう?

基本は4ビットずつ区切って, &H0〜&HFに変換していくだけだと思いますがいかがでしょう。



解決法はどういう形で二進数の値をテーブルに保持するかによって変わるかと。

タイトルDodonpaさん、ありがとうございます。
記事No16718
投稿日: 2011/05/19(Thu) 21:13
投稿者やま
> こんにちは。失礼します。
>
> >SQLで「バイナリ型」のフィールドを持つテーブルを作成し、
> Jetではバイナリ型は未サポートです。ですから、二進数をバイナリ型としてテーブルに
> 保持することはできません。

Jetというものを初めて耳にしました…。
access用に開発されたリレーショナルデータベースエンジンのようですね。
(それって何?と思ってしまいました…)

え、二進数はバイナリ型として保持できないのですか?
DDL文で「バイナリ型」フィールドを作成できたので、そこに入れた文字列は全て
バイナリ型だと思っていたのですが、違うのですか?
無知すぎて混乱しています。
もっとちゃんと知識をつけることから始めないと駄目ですね・・・


> >ネットなどで調べても変換の仕方がいまいちわかりません・・・
> どこまではわかったのでしょう?
>
> 基本は4ビットずつ区切って, &H0〜&HFに変換していくだけだと思いますがいかがでしょう。
>
>
>
> 解決法はどういう形で二進数の値をテーブルに保持するかによって変わるかと。

えっと、やりたいことを間違えて聞いていたのかもしれませんが、
・バイナリ型フィールドに二進数を入力
・外部ファイルにエクスポート(正しく表示)
・テキストエディタまたはバイナリエディタで16進表示されていることを確認する
(わたしの場合はサクラエディタで、右下のCRLFとSJISという欄の間に表示されるところで確認)

なのですが、自分も何がしたくてどう表示されるのが正解なのかよくわかっていないかもしれません…

バイナリ型データをCStrで数値に変換して、エクスポートして、サクラで確認しようかなと
考えているのですが…

タイトルRe: Dodonpaさん、ありがとうございます。
記事No16719
投稿日: 2011/05/19(Thu) 22:39
投稿者Dodonpa
こんにちは。

DDL-SQLを発行したのですか。納得しました。
テーブルのデザインビューからはバイナリ型は選択できないし、

<ヘルプより - データ型の比較>
>Access 自体は BINARY データ型を使用しません。BINARY データ型は、
>このデータ型をサポートする他のデータベース製品のリンク テーブルのクエリで
>使う場合にのみ認識されます。
とあり、また

<ヘルプより - SQL データ型>
>BINARY

>1 文字につき 1 バイト

>このデータ型のフィールドには、ほかのどの型のデータでも格納できます。
>テキスト型 (Text) などへのデータ型の変換は行われません。
>フィールドに入力されるデータによって、出力のされ方が決まります。

とあるので疑問に思ったまでです。


で、本題ですが前回申し上げたように4ビットずつ切り出して16進数に変換するような
関数を作成すればできそうです。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る