У меня есть две длинные точки, представляющие наибольшие и наименее значащие байты UUID соответственно. Как я могу использовать Ruby для преобразования этих двух длин в 32-символьное шестнадцатеричное представление?Преобразование двух длин в шестнадцатеричную строку
0
A
ответ
2
Попробуйте использовать %
string format operator как "%016x"
(шестнадцать ноль проложенных шестнадцатеричных цифр):
a = 0xCAFEBABECAFEBABE # => 14627333968358193854
b = 0xDEADBEEFDEADBEEF # => 16045690984833335023
'%016x%016x' % [a, b] # => "cafebabecafebabedeadbeefdeadbeef"
Есть много способов, чтобы вставить тир на нужном месте, если вы хотите, чтобы получить правильно отформатированный UUID строки; вот первое, что приходит на ум:
def longs_to_uuid(a, b)
s = '%016x%016x' % [a, b]
s.scan(/(.{8})(.{4})(.{4})(.{4})(.{12})/).first.join('-')
end
longs_to_uuid(1,2) # => "00000000-0000-0001-0000-000000000002"
Не забудьте рассмотреть, если это порядка байтов это беспокойство ...
Смежные вопросы
- 1. Преобразование строки в шестнадцатеричную строку в C#
- 2. Преобразование двоичной строки в шестнадцатеричную строку JAVA
- 3. Преобразование хэш в шестнадцатеричную строку символов
- 4. Преобразование двоичной строки в шестнадцатеричную строку C
- 5. Преобразование десятичной NSString в шестнадцатеричную строку
- 6. Преобразование десятичной в шестнадцатеричную
- 7. Преобразование массива примитивных длин в список длин.
- 8. преобразовать строку в шестнадцатеричную строку
- 9. Преобразовать строку в шестнадцатеричную
- 10. PHP строку в шестнадцатеричную
- 11. Добавление двух длин
- 12. Как преобразовать шестнадцатеричную строку NSData в стандартную шестнадцатеричную строку?
- 13. Формат int в шестнадцатеричную строку
- 14. Преобразование int в шестнадцатеричную строку с использованием рекурсии
- 15. Преобразование целых чисел в шестнадцатеричную строку в JavaScript
- 16. Преобразование из арабской строки в шестнадцатеричную строку html в C#
- 17. Преобразование большого целого в шестнадцатеричную строку в Javascript
- 18. Преобразование абзаца в шестнадцатеричную нотацию, затем обратно в строку
- 19. Быстрое преобразование необработанных данных в шестнадцатеричную строку в C++
- 20. Преобразование целого числа в шестнадцатеричную строку в Ruby
- 21. Преобразование long в шестнадцатеричную строку (например, адрес памяти)
- 22. Преобразование шестнадцатеричной строки в разделенную запятой шестнадцатеричную строку C#
- 23. Преобразование двоичной строки с ведущими нулями в шестнадцатеричную строку
- 24. Простой SQL-преобразование из RAW в шестнадцатеричную строку
- 25. Зачем преобразовывать массив байтов в шестнадцатеричную строку?
- 26. Итерации через шестнадцатеричную строку
- 27. Показать только шестнадцатеричную строку
- 28. Python: конвертировать шестнадцатеричную строку
- 29. сравнить массивы двух разных длин
- 30. Преобразование строки в шестнадцатеричную и наоборот наоборот
Спасибо за ответ. Я думаю, что endianness имеет какое-то отношение к нему, как к некоторым входам (например, 1087192506523562918), я возвращаю только 31 символ. – Blumer
@Blumer: проверьте обновление этого ответа, перезагрузив страницу, я включил нужное дополнение. – maerics
Yup, я думаю, что сделал это. Спасибо за вашу помощь! – Blumer