@@ -500,28 +500,30 @@ private static function _read_new_decimal($column) {
500
500
self ::$ PACK ->unread (pack ('C ' , $ value ^ 0x80 ));
501
501
$ size = $ compressed_bytes [$ comp_integral ];
502
502
if ($ size > 0 ) {
503
- $ value = self ::$ PACK ->read_int_be_by_size ($ size ) ^ $ mask ;
503
+ $ f = self ::$ PACK ->read_int_be_by_size ($ size );
504
+ $ value = $ f ^ $ mask ;
504
505
$ res .= (string )$ value ;
505
506
}
506
507
507
-
508
508
for ($ i =0 ;$ i <$ uncomp_integral ;$ i ++) {
509
- $ value = unpack ( ' N ' , self ::$ PACK ->read (4 ))[ 1 ] ^ $ mask ;
509
+ $ value = self ::$ PACK ->read_int_be_by_size (4 ) ^ $ mask ;
510
510
$ res .= sprintf ('%09d ' , $ value );
511
511
}
512
512
513
+
513
514
$ res .= ". " ;
514
515
for ($ i =0 ;$ i <$ uncomp_fractional ;$ i ++) {
515
- $ value = unpack ( ' N ' , self ::$ PACK ->read (4 ))[ 1 ] ^ $ mask ;
516
+ $ value = self ::$ PACK ->read_int_be_by_size (4 ) ^ $ mask ;
516
517
$ res .= sprintf ('%09d ' , $ value );
517
518
}
518
519
519
520
$ size = $ compressed_bytes [$ comp_fractional ];
520
521
if ($ size > 0 ) {
521
- $ value = self ::$ PACK ->read_int_be_by_size ($ size ) ^ $ mask ;
522
-
522
+ $ f = self ::$ PACK ->read_int_be_by_size ($ size );
523
+ $ value = $ f ^ $ mask ;
523
524
$ res .=sprintf ('%0 ' .$ comp_fractional .'d ' , $ value );
524
525
}
526
+ //todo 超过int范围无法解析此函数 ex:11111111111199876665554567.001
525
527
return number_format ($ res ,$ comp_fractional ,'. ' ,'' );
526
528
}
527
529
@@ -531,7 +533,7 @@ private static function _getUpdateRows($result, $len) {
531
533
$ rows = [];
532
534
while (!self ::$ PACK ->isComplete (self ::$ PACK_SIZE )) {
533
535
534
- $ value ['beform ' ] = self ::_read_column_data ($ result ['bitmap1 ' ], $ len );
536
+ $ value ['before ' ] = self ::_read_column_data ($ result ['bitmap1 ' ], $ len );
535
537
$ value ['after ' ] = self ::_read_column_data ($ result ['bitmap2 ' ], $ len );
536
538
$ rows [] = $ value ['after ' ];
537
539
}
0 commit comments