
こんにちは
現在、vb6で開発を行っております。
早速ですが、困っていることがあります。
データベースを読み込んで、その値をテキストファイルに出力しているのですが、ある項目(数値)だけパック10進数に変換して出力しなければなりません。
いろいろなサイトを調べた結果、
例:数値で432 は "0100001100101100"
のように変換できることがわかりました。しかし、この時点ではただの文字列のためこの値をテキストファイルに出力しても意味がありません。パック10進数のコード(?)としてテキストファイルに出力するにはこの後、どのようにすればいいのでしょうか。
ご存じの方がいらっしゃれば、ご教授願えないでしょうか?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
昔なつかし、IBM大型のPack、UnPackで悩まされましたが(そのときは相互変換指令があったが)、下記は昔旧BASICでやったような気もするが、十分な自信はないが。
ーー
上位4ビット、下位4ビットに分けて考える。
432は数がプラスのときは432C,
マイナスのときは432Dだったと思うが、所定の符号桁4ビットを最後に添える決まり。2進数の符号と違い、符号桁も4ビットです。
ーー
最後の桁からまず符号C
00001100-ー下位4ビット注目
数の2
00100000ーー上位4ビット注目
両者をANDのビット演算で
00101100にする。 --この段階で文字として扱ってよいはず(x)
ーー
数の3
00000011-ー下位4ビット注目
数の4
01000000ーー上位4ビット注目
両者をANDのビット演算で
01000011にする--この段階で文字として扱ってよい(Y)
ーー
Y&Xで結合。
==
コンピュタは4ビット単位では処理させてくれないのではと思う。
言語処理系にもよると思うが。
それで上位下位4ビットずつの定数を定義し(上位用10種+下位用10種の20種)ANDで結合して8ビットを作り、できたビット文字列を、文字列として結合する。上位下と記の2桁ごとの繰り返しに持ち込む。
ただ値の型変換に厳しい言語だと苦労するかもしれない。8ビット2進数を、文字として扱わせてくれるかどうか。
===
いまWEBを見ると
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?p …
なども見つかった。
「Pack10進数」で照会してみて。小数ながら記事が出るようだ。
No.3
- 回答日時:
>この時点ではただの文字列のため
文字列といわずに直接数値に変換すればいいのでしょう。
432をパック10進に変換すれば2進数で0100001100101100です。
これをわざわざ文字列に入れかえる必要がないのではないでしょうか?
直接数値に変換したのならば16進数で432Cです。
見た目にはこの432Cをデータとして書き込むようにみえますが。
No.2
- 回答日時:
その出力を受け取る側の仕様を確認なさったほうがいいのではないでしょうか
2進表記でいいのか 16進表記にするのか 桁数は3桁なのかなど
2進表記の際に 4ビットごとの区切りが必要なのか
テキストファイルに出力する場合 Chr関数で文字コードに変換して出力でしょう
'インデントに全角スペースを使用しています
dim s as String, s1 as string, n as byte
dim number as integer
number = 432
s = Str(number)
do
s1 = left(s,2)
s = mid(s,3)
' 変換対象の文字列が無くなればループを抜ける
if len(s)= 0 then exit do
' 変換対象の文字列が2文字未満なら
if len(s1) < 2 then
'符号コードを追加する
if number >= 0 then
s1 = s1 & "c"
else
s1 = s1 & "d"
end if
end if
n = val( "&h" & s1 )
print #1, chr( n );
loop
といった具合でしょう
No.1
- 回答日時:
テキストファイル上では、すべての内容は文字列となります。
本件でのパック10進数表記の仕様はどのようになっていますか?
+432ならば、
0100 0011 0010 1100
とのように、バイト毎に半角スペースでも挿入するのでしょうか?
とにかく出力するテキストファイルの仕様がわからないと回答しにくいです。
早速のご回答ありがとうございます。
仕様ははっきりしません(パックとしか・・・)
もし、Nabehiさんのおっしゃるように
0100 0011 0010 1100 のようになるのであれば、どのようにテキストファイルに出力すればよろしいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合 6 2022/10/22 11:01
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
ExcelVBA実行後に時々落ちる
-
std::stringからLPCWSTR型への変換
-
数字5桁文字コード?
-
COBOLによる全角・半角混...
-
Excelマクロにて30分単位の計算...
-
「彡」って文字はなんという文...
-
C#でバイナリデータをテキスト...
-
%fと%gについて
-
sedで日本語の置換方法について
-
ふりがなをアルファベット化す...
-
Excel vba で1と10を正確に判断...
-
PL/SQLでSJISの文字コードを取...
-
特殊記号
-
VB.NETのコンソールアプリケー...
-
ASCIIコードの文字化け??
-
VBでバイナリデータについて。
-
ホームページビルダーが勝手にU...
-
文字コード(たぶんユニコード)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
「彡」って文字はなんという文...
-
ふりがなをアルファベット化す...
-
ExcelVBA実行後に時々落ちる
-
VS 2008(VB.NET)
-
COBOLによる全角・半角混...
-
数値のパック10進数の変換に...
-
Symfowareでのデータ型変換につ...
-
sedで日本語の置換方法について
-
2バイト文字をJEFからSJISに変...
-
フォームのコントロールのバッ...
-
JIS → S-JIS コード変換するには
-
英数字を含む文字列(0-9,A-Z)...
-
Excel vba で1と10を正確に判断...
-
Excelマクロにて30分単位の計算...
-
PL/SQLでSJISの文字コードを取...
-
S-JIS → JIS コード変換するには
-
%fと%gについて
おすすめ情報