PostgreSQL 스토리지에 대해 의도적으로 정수 오버플로
PostgreSQL의 BIGINT 데이터 유형 크기를 초과하는 uint64 해시 값을 저장하는 맥락에서(서명됨) 64비트) 일반적인 해결 방법은 다음과 같이 uint64를 int64로 변환하는 것입니다. 이진 표현을 변경하지 않고 유형을 변경하기만 하면 됩니다.
해결책:
i := uint64(0xffffffffffffffff) i2 := int64(i)
이 유형 변환을 사용하면 uint64 값이 int64 변수에 할당되고 해당 값은 유지됩니다. 원래 이진 표현. 이는 변환이 값의 메모리 표현을 변경하지 않고 해당 유형만 변경하기 때문에 가능합니다.
출력:
18446744073709551615 -1
uint64를 int64로 변환하는 것은 항상 가치에 관계없이 성공했습니다. 다만, 형식화되지 않은 정수 상수 값을 int64로 변환할 경우 int64로 표현할 수 있는 최대값(0x7fffffffffffffff)을 초과하는 경우 컴파일 타임 오류가 발생할 수 있다는 점에 유의해야 합니다.
위 내용은 크기 제한에도 불구하고 PostgreSQL의 BIGINT에 uint64 해시 값을 어떻게 저장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!