我对二进制数据有问题,我有一个C#代码,它将二进制数据插入表中,列类型为RAW(64)
,在某些情况下某些字节丢失。我发现问题是如果我的数据以0xFFFE
开头,那么我可以在sql中创建这种情况:
CREATE TABLE BlobTable(
testData BLOB
);
然后我插入记录:
INSERT INTO BlobTable VALUES(hextoraw('FFFE01'));
INSERT INTO BlobTable VALUES(hextoraw('01'));
INSERT INTO BlobTable VALUES(hextoraw('FFFF01'));
INSERT INTO BlobTable VALUES(hextoraw('FFFEFFFEFFFE01'));
然后我这样做:
SELECT DUMP ( CAST ( testData AS RAW( 128 ) ) ) FROM BlobTable;
结果是:
Typ=23 Len=1: 1
Typ=23 Len=1: 1
Typ=23 Len=3: 255,255,1
Typ=23 Len=5: 255,254,255,254,1
请相信,问题出在开头是0xFFFE
个字节,在两种情况下,当我将这些字节转换为RAW时,都缺少第一个0xFFFE
。您知道为什么会这样吗?我也想知道字节的任何其他组合是否会造成相同的情况。