アカウント名:
パスワード:
> C/C++を触っているプログラマーなら
じゃあ他の言語のプログラマーはEBCDICコードでも使ってるのでしょうか?ASCIIコードは言語に依存しないですよ。(ISO8859でも、Unicodeでも、16進数でいう20、10進数でいう32はスペースですからねえ)。
ASCIIコードは言語に依存しないですよ。(ISO8859でも、Unicodeでも、16進数でいう20、10進数でいう32はスペースですからねえ)。
馬脚だな。
UTF-16L (今のWindowsで最もよく使われるはずの文字コード) の場合、 0x20 0x00 0x20 0x00 0x20 ... 0x00.のようになるので、今回とは違う数字になる。
確かにスペースは「0x20」だろう。しかし「1バイトの」0x20でスペースが表現できるには、ASCII か UTF-8。
フレームワークなんかがトラブル防止のために0x00をエスケープして消しちゃうシステムも普通にあったりします。クレジット会社のシステムに連結するところにそんなのが組み込まれてる可能性も否定できないでしょう。(バージョンアップでセキュリティ対策としてそんな仕様変更が組み込まれ、技術者がその辺を理解しないままバージョンアップしちゃった、とか普通にあり得ます。)
ついでに、送られてきた情報のバイト数を見て「文字列なのか数値なのか」を判断するようなシステムも実際に日本の某銀行では稼働していたりするので、例えば
0x31 0x00 0x30 0x00(UTF-16LEの文字列で「10」)
が、0x00をエスケープされた結果
0x31 0x30 となり、バイト数が2バイトしかなかった為に「整数型」と判断された挙げ句、「12592(10)」と解釈される、等と言うことはあってもおかしくありません。(「2バイトの時は整数型、それ以上なら文字列として扱う」なんて仕様が本当にあったりする。もちろん「文字が1文字だけ送られてくることは仕様上ありえない」のが前提。)
さて、どっちが馬脚なのやら。
# 上に書いた「某銀行」の中の人なのでAC# 仕様として正しいとは思わないけどね、自分も。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
16進数の20はC/C++に特有なのか? (スコア:0, フレームのもと)
> C/C++を触っているプログラマーなら
じゃあ他の言語のプログラマーはEBCDICコードでも使ってるのでしょうか?
ASCIIコードは言語に依存しないですよ。(ISO8859でも、Unicodeでも、
16進数でいう20、10進数でいう32はスペースですからねえ)。
Re: (スコア:-1, フレームのもと)
馬脚だな。
UTF-16L (今のWindowsで最もよく使われるはずの文字コード) の場合、
0x20 0x00 0x20 0x00 0x20 ... 0x00.
のようになるので、今回とは違う数字になる。
確かにスペースは「0x20」だろう。しかし「1バイトの」0x20でスペースが表現できるには、ASCII か UTF-8。
fjの教祖様
Re:16進数の20はC/C++に特有なのか? (スコア:3, 興味深い)
フレームワークなんかがトラブル防止のために0x00をエスケープして消しちゃうシステムも普通にあったりします。クレジット会社のシステムに連結するところにそんなのが組み込まれてる可能性も否定できないでしょう。
(バージョンアップでセキュリティ対策としてそんな仕様変更が組み込まれ、技術者がその辺を理解しないままバージョンアップしちゃった、とか普通にあり得ます。)
ついでに、送られてきた情報のバイト数を見て「文字列なのか数値なのか」を判断するようなシステムも実際に日本の某銀行では稼働していたりするので、例えば
0x31 0x00 0x30 0x00(UTF-16LEの文字列で「10」)
が、0x00をエスケープされた結果
0x31 0x30 となり、バイト数が2バイトしかなかった為に「整数型」と判断された挙げ句、「12592(10)」と解釈される、等と言うことはあってもおかしくありません。
(「2バイトの時は整数型、それ以上なら文字列として扱う」なんて仕様が本当にあったりする。もちろん「文字が1文字だけ送られてくることは仕様上ありえない」のが前提。)
さて、どっちが馬脚なのやら。
# 上に書いた「某銀行」の中の人なのでAC
# 仕様として正しいとは思わないけどね、自分も。